sqldataadapter.update不能修改数据库
我想把整理好的datatable数据更新,想用SqlDataAdapter.Update()方法去修改数据库,提示已经修改,但数据库中没有任何更新,代码如下,大家帮我看盾...
我想把整理好的datatable数据更新,想用SqlDataAdapter.Update()方法去修改数据库,提示已经修改,但数据库中没有任何更新,代码如下,大家帮我看盾到底是哪里错了。
using (SqlConnection con = this.GetConnection()) {
SqlCommand comm = con.CreateCommand();
comm.CommandType = CommandType.Text;
comm.CommandText = string.Format("SELECT * FROM {0} where 1=0", table.TableName);
SqlDataAdapter adapter = new SqlDataAdapter(comm);
adapter.SelectCommand = comm;
adapter.UpdateBatchSize = table.Rows.Count;
adapter.SelectCommand.Transaction = con.BeginTransaction();
try {
table.AcceptChanges();
foreach (DataRow row in table.Rows) {
row.SetModified();
}
SqlCommandBuilder commandBulider = new SqlCommandBuilder(adapter);
int a = adapter.Update(table);
table.AcceptChanges();
adapter.SelectCommand.Transaction.Commit();
return a;
} catch (Exception ex) {
if (adapter.SelectCommand != null && adapter.SelectCommand.Transaction != null) {
adapter.SelectCommand.Transaction.Rollback();
}
return -1;
}
} 展开
using (SqlConnection con = this.GetConnection()) {
SqlCommand comm = con.CreateCommand();
comm.CommandType = CommandType.Text;
comm.CommandText = string.Format("SELECT * FROM {0} where 1=0", table.TableName);
SqlDataAdapter adapter = new SqlDataAdapter(comm);
adapter.SelectCommand = comm;
adapter.UpdateBatchSize = table.Rows.Count;
adapter.SelectCommand.Transaction = con.BeginTransaction();
try {
table.AcceptChanges();
foreach (DataRow row in table.Rows) {
row.SetModified();
}
SqlCommandBuilder commandBulider = new SqlCommandBuilder(adapter);
int a = adapter.Update(table);
table.AcceptChanges();
adapter.SelectCommand.Transaction.Commit();
return a;
} catch (Exception ex) {
if (adapter.SelectCommand != null && adapter.SelectCommand.Transaction != null) {
adapter.SelectCommand.Transaction.Rollback();
}
return -1;
}
} 展开
2个回答
展开全部
就像 SqlDataAdapter 查询数据要设置 SelectCommand 一样
更新要设置 UpdateCommand
更新要设置 UpdateCommand
更多追问追答
追问
我在SqlCommandBuilder commandBulider = new SqlCommandBuilder(adapter);后面加上 adapter.UpdateCommand = commandBulider.GetUpdateCommand();也还是一样,更新不了
追答
自动生成的 UpdateCommand 要求可知的主键,此主键需要在代码上明确指定,无主键不能生成正确的 where 子句
展开全部
myAdpt.Fill(DataSet16284 "1")DataGridView1.DataSource = DataSet1.Tables("学生表") 这两句是有关系的改成这样myAdpt.Fill(DataSet1 "1")DataGridView1.DataSource = DataSet1.Tables("1")
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询