Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用SQL命令从我的DataTable对象使用foreach循环更新C#中的MS Access数据库?_C#_Sql_Ms Access_Datatable - Fatal编程技术网

如何使用SQL命令从我的DataTable对象使用foreach循环更新C#中的MS Access数据库?

如何使用SQL命令从我的DataTable对象使用foreach循环更新C#中的MS Access数据库?,c#,sql,ms-access,datatable,C#,Sql,Ms Access,Datatable,我试图用foreach循环更新我的MS-Access数据库,该循环迭代我在DataGrid(WPF)中看到的DataTable对象的所有行;它应该更新数据库中的表 在对列的某一行进行了一些更改之后,我想保存它们。但是我的SQL命令只响应一次(最后一个循环)。MessageBox显示每个循环中要更新的正确行。但是当我再次打开数据库时,整个列都是空的 希望有人能帮助我:)顺便说一句,我是编程的绝对初学者 OleDbCommand Command2 = new OleDbCommand(); Comm

我试图用foreach循环更新我的MS-Access数据库,该循环迭代我在DataGrid(WPF)中看到的DataTable对象的所有行;它应该更新数据库中的表

在对列的某一行进行了一些更改之后,我想保存它们。但是我的SQL命令只响应一次(最后一个循环)。MessageBox显示每个循环中要更新的正确行。但是当我再次打开数据库时,整个列都是空的

希望有人能帮助我:)顺便说一句,我是编程的绝对初学者

OleDbCommand Command2 = new OleDbCommand();
Command2.Connection = Connection;

Connection.Open();

foreach (DataRow DR1 in DT1.Rows)
{
    string S1 = Convert.ToString(DR1["Column1"]);
    MessageBox.Show("Current Row: " + S1 +" will be updated");

    Command2.CommandText = "UPDATE Table1 SET Column1= '" + S1 + "' WHERE ID = 0 ";
    Command2.ExecuteNonQuery();   
}

Connection.Close();
这对我很有用:)


使用DataAdapter填充DataTable(请参阅)。然后修改数据表。接下来添加命令(请参见)。现在您可以使用适配器更新方法将更改写回数据库。谢谢您的回复!嗯,我试着像你告诉我的那样实现它,但它仍然不起作用。只有我的foreach循环的最后一次迭代将它写回我的数据库:这次我使用了DataAdapter“DA1”。数据库有主键吗。?ExecuteOnQerry返回一个整数,指示更改的行数。价值是什么?看起来代码正在写回读取的代码。你怎么知道只有最后一行在写回信?你有例外吗?你经历了多少次for循环?你好,谢谢你的回复:)数据库没有主键。我用Access检查数据库,看它是否更新了数据。在那里,我可以看到数据是否得到更新。我尝试了其他一些方法,现在只有第一个循环起作用。如果在Access中看到更改,那么在更改后c#中的视图不会得到更新。您如何在c#中查看数据?
foreach (DataRow DR1 in DT1.Rows)
               {
                  
                    DA1.UpdateCommand = new OleDbCommand("UPDATE Table1 SET Column1 = @Column1 WHERE ID= @ID", Connection);
                    DA1.UpdateCommand.Parameters.Add("@Column1", OleDbType.VarChar).Value = Convert.ToString(DR1["Column1"]);
                    DA1.UpdateCommand.Parameters.Add("@ID", OleDbType.VarChar).Value = Convert.ToString(DR1["ID"]);
                    DA1.UpdateCommand.ExecuteNonQuery();
                   
                }