在 sa.Update((DataTable)bs.DataSource); 之前添加
SqlCommandBuilderbu = new SqlCommandBuilder( sa);试一下。
我不知道你写那么多代码是要解决什么问题,如果是要将dataGridView中所作的变更都体现到DB中的话那么你可以尝试以下操作
1、用 SqlDataAdapter的 Fill方法填充一个 DataSet
2、将这个 DataSet 绑定到 dataGridView.DataSource
3、对 dataGridView 中的数据进行修改
4、用 SqlCommandBuilderbu 生成用于协调 DataSet 的更改与关联数据库的单表命令。
5、用 SqlDataAdapter的 Update 方法更新这个 DataSet
参考代码:
1、绑定 dataGridView
string ConnectionString
= "Data Source=TEST;Persist Security Info=True;User ID=my_new;Password=test";
DataSet ds = new DataSet();
OracleConnection conn;
OracleDataAdapter da;
da = new OracleDataAdapter( "select t.* from cm_general_case_info_t t", conn );
ds.Clear();
da.Fill( ds, "UserInfo" );
conn.Close();
this.dataGridView1.DataSource = ds.Tables["UserInfo"];
2、更新dataGridView
DataTable dt = ( DataTable )dataGridView1.DataSource;
OracleCommandBuilder bu = new OracleCommandBuilder( da );
da.Update( ds.Tables["UserInfo"] );
我给的代码是用 ADO.NET System.Data.OracleClient 命名空间 下的类,你只要改成对应的 System.Data.SqlClient 命名空间中的类即可。
转载于:https://my.oschina.net/arthurdu/blog/79048