C# SqlCeDataAdapter 在从 datagridview 更改值后调用 Adapter.Update() 时不更新数据库中的值
Posted
技术标签:
【中文标题】C# SqlCeDataAdapter 在从 datagridview 更改值后调用 Adapter.Update() 时不更新数据库中的值【英文标题】:C# SqlCeDataAdapter not updating values from database when calling Adapter.Update() after changing values from datagridview 【发布时间】:2017-11-07 11:40:01 【问题描述】:我有一个代码,其中包含本地数据库“database1.sdf”以及带有一些值的表“Employees”。我正在使用 Datagridview.Datasource 属性将数据库中的所有行添加到 datagridview 中。所有行都从表中获取!美好的! 当我尝试从 datagridview 更新列值时,它不会从数据库更新。删除行以及添加新行时会发生同样的问题。 运行程序没有异常。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlServerCe;
namespace demoDatabaseOperations
public partial class Form1 : Form
public Form1()
InitializeComponent();
public SqlCeConnection con = new SqlCeConnection("Data source=Database1.sdf");
public DataTable dt = new DataTable();
public SqlCeDataAdapter adptr;
public SqlCeCommandBuilder cmdBuilder;
private void Form1_Load(object sender, EventArgs e)
con.Open();
if (con.State == ConnectionState.Open)
adptr = new SqlCeDataAdapter("select * from employees", con);
cmdBuilder = new SqlCeCommandBuilder(adptr);
adptr.UpdateCommand = cmdBuilder.GetUpdateCommand();
adptr.Fill(dt);
this.dataGridView1.DataSource = dt;
//Button For Update/delete/insert values to the database
private void button1_Click(object sender, EventArgs e)
try
adptr.Update(dt);
adptr.Dispose();
catch (Exception f) MessageBox.Show(f.ToString());
有人有解决办法吗?
提前致谢
【问题讨论】:
您确定 adptr 有更新说明吗? 以msdn.microsoft.com/en-us/library/… 为例 - 您没有在代码中显示任何更新部分 @BugFinder 我们必须手动创建更新指令,例如“更新表名设置列...”?或adptr.UpdateCommand = cmdBuilder.GetUpdateCommand();
这将在从 datagridview 更改列时自动生成更新值的指令?
尝试完全删除这一行 adptr.UpdateCommand = cmdBuilder.GetUpdateCommand();
@Abdou 不工作!同样的问题依然存在!
【参考方案1】:
我想我知道发生了什么。您已将数据库文件放在项目的根文件夹中,并将其添加到项目中,当您构建项目时,此文件将复制到调试文件夹,此复制的文件是您的应用更新的文件
您可以将数据库文件的绝对路径放在连接字符串中 Data source=C://Database1.sdf
【讨论】:
不错!问题是用较新的更新 database.sdf!以上是关于C# SqlCeDataAdapter 在从 datagridview 更改值后调用 Adapter.Update() 时不更新数据库中的值的主要内容,如果未能解决你的问题,请参考以下文章
为啥在从 C# 创建的进程中运行 bash 命令时我的 $PATH 不同?
在从 C++ 转换为 C# 的代码中,我应该使用啥来代替 memcpy?