首页 > 解决方案 > 更新数据时datagridview中的点/点

问题描述

所以,我有一个 datagridview (datagridview1),它连接到 SQL Server。第 3 列 (adhb) 中的 datagridview 可以通过按下按钮进行更新,只需在特定列中进行编辑。问题是当我尝试更新十进制数(例如 100.25)时,它只是更改为 10025。它如何能够更新十进制值?

数据库(tbl_tahunan),第3列(adhb)设置为十进制(18,2)

查询更新数据

query = "UPDATE tbl_tahunan SET adhb = " + datagridview1.Rows[0].Cells[2].Value + " WHERE id_coicop = 1";

cmd = new SqlCommand(query, conn);

cmd.ExecuteNonQuery();

标签: c#sql-serverwinformsdatagridview

解决方案


如果您让生活变得轻松,那么使用数据网格编辑数据库非常容易。尝试这样做:

  • 做一个全新的项目,这样你就不会打扰现有的代码
  • 添加数据集类型的新文件
  • 双击打开
  • 右键单击表面上的任意位置,选择 Add.. TableAdapter
  • 填写db的连接详情
  • 选择“产生行的选择”
  • 提出查询SELECT * FROM tbl_tahunan
  • 完成向导
  • 切换到表格
  • 打开数据源工具面板(查看菜单、其他 Windows 子菜单)
  • 展开数据集名称中的节点
  • 将 tbl_tahunan 拖到窗体上
  • 运行程序

是的,就是这样,不是你写的一行代码;VS 已经完成了这一切(并且做得更好),这个简单的应用程序将下载、显示、编辑和保存行。我敢打赌它也不会有任何小数问题..

您可以通过阅读 .Designer.cs 文件中的代码来了解它是如何工作的:datagridview 通过 bindingSource 连接到数据表(tbl_tahunandatatable)。当您用数据填充表格时,您将看到网格自动显示数据。您不需要与 datagridview 单元格集合进行交互。数据的所有程序化编辑都应该对数据表进行。这是一个称为 MVC 的概念(模型 - 数据表,视图 - 数据网格视图,控制器 - 有时是处于编辑模式的数据网格视图,有时是其他) - 将 M 与 VC 分开通常有助于构建合理的程序结构

您可以在您创建的这个简单应用程序的基础上进行构建,例如:

  • 打开数据集,
  • 右键单击 TableAdapter,
  • 添加另一个查询,
  • 添加带有一些相关 where 子句的查询(类似SELECT * FROM tbl_tahunan WHERE adhb BETWEEN @from AND @to
  • 称它为一个好名字,比如 FillByAdhbBetween
  • 在 UI 中放置一些文本框
  • 在调用它的 ui 上放置一个按钮:
tbl_tahunanTableAdapter.FillByAdhbBetween(somedatasetname.tbl_tahunan, Convert.ToDecimal(adhbfromTextbox.Text), Convert.ToDecimal(adhbtoTextbox.Text))

现在网格将只填充一些行而不是全部

就我个人而言,我总是让表适配器中的第一个查询有一个 WHERE 子句,它通过主键进行选择。加载相关数据很方便。我们几乎不想从数据库中选择所有行到我们的程序中


推荐阅读