C#数据表更新Access数据库
如何将C#数据表更新Access数据库,c#,database,ms-access,datatable,oledb,C#,Database,Ms Access,Datatable,Oledb,如何将数据表保存到文件中。accdb(访问)是否存在?我使用了以下代码,但它不起作用: using (OleDbConnection oledbConnection = new OleDbConnection(connection)) { oledbConnection.Open(); string query = "SELECT * FROM Student"; using (OleDbCommand oledbCommand = new OleDbCommand(query
数据表
保存到文件中。accdb(访问)是否存在?我使用了以下代码,但它不起作用:
using (OleDbConnection oledbConnection = new OleDbConnection(connection))
{
oledbConnection.Open();
string query = "SELECT * FROM Student";
using (OleDbCommand oledbCommand = new OleDbCommand(query, oledbConnection))
{
using (OleDbDataAdapter oledbDataAdapter = new OleDbDataAdapter(oledbCommand))
{
using (OleDbCommandBuilder oledbCommandBuilder = new OleDbCommandBuilder(oledbDataAdapter))
{
oledbDataAdapter.DeleteCommand = oledbCommandBuilder.GetDeleteCommand(true);
oledbDataAdapter.InsertCommand = oledbCommandBuilder.GetInsertCommand(true);
oledbDataAdapter.UpdateCommand = oledbCommandBuilder.GetUpdateCommand(true);
oledbDataAdapter.Update(dataTable);
}
}
}
oledbConnection.Close();
}
变量dataTable用文件的原始内容初始化,然后通过添加一行对其进行修改,现在我必须更新数据库中的表
我尝试使用以下代码,但不起作用:(
假设您在datatable中做了一些更改,那么您可以通过这种方式将生成的update/insert/delete命令传递给适配器
oledbDataAdapter.DeleteCommand = oledbCommandBuilder.GetDeleteCommand();
oledbDataAdapter.InsertCommand = oledbCommandBuilder.GetInsertCommand();
oledbDataAdapter.UpdateCommand = oledbCommandBuilder.GetUpdateCommand();
oledbDataAdapter.Update(datatable);
现在适配器知道如何更新表了假设您对datatable做了一些更改,那么您可以通过这种方式将生成的update/insert/delete命令传递给适配器
oledbDataAdapter.DeleteCommand = oledbCommandBuilder.GetDeleteCommand();
oledbDataAdapter.InsertCommand = oledbCommandBuilder.GetInsertCommand();
oledbDataAdapter.UpdateCommand = oledbCommandBuilder.GetUpdateCommand();
oledbDataAdapter.Update(datatable);
现在适配器知道如何更新表了如果您在
监视窗口
中发出dataTable.GetChanges()
,您是否得到任何更改?此方法对其他函数有用,但对此不有用。感谢您发出dataTable.GetChanges()
在监视窗口中,您是否得到任何更改?此方法对于另一个函数很有用,但对于此函数无效。感谢Good catch Steve,当我阅读GetDeleteCommand()
行时,我忽略了OP没有分配命令的事实!是的!“无法添加所需的数据量。字段太小。插入或粘贴的数据较少。”这是另一个问题。它是由插入到表的一列中的值生成的。此列(可能是文本列)的大小不足以包含用户在输入框中键入的数据(需要将其缩小或设置maxlength)我建议发布一个新的问题,它会比这个答案中的评论更受关注。很好,Steve,我错过了一个事实,即当我阅读GetDeleteCommand()
line!yes!”时,OP没有分配命令。无法添加所需的数据量。字段太小。插入或粘贴的数据较少。“嗯,这是另一个问题。它是由插入表中某一列的值生成的。此列(可能是文本列)的大小不足以包含用户在输入框中键入的数据(需要将其缩小或设置maxlength)。我建议发布一个新问题,它将比此答案中的注释更受关注。