日期:2014-05-16  浏览次数:20477 次

SqlDataAdapter.Update无法修改数据库记录

private SqlDataAdapter adapter;
private DataSet dataSource;
string connectionString = "server=localhost; uid=sa; pwd=123; database=Courses";
string cmdString = "SELECT * FROM COURSE";
SqlConnection sqlConnection = new SqlConnection(connectionString);
SqlCommand sqlCmd = new SqlCommand(cmdString, sqlConnection);
sqlConnection.Open();

this.adapter = new SqlDataAdapter();
adapter.SelectCommand = sqlCmd;
this.dataSource = new DataSet();
adapter.Fill(dataSource, "COURSE");

在更改了dataSource后,执行
int ret = this.adapter.Update(dataSource, "COURSE");

得到ret的值为1,但是如果是添加记录和删除记录,则可以更新到数据库中,如果是更改某个字段的值,则无法更新到数据库中。
在 Update 过程中,如果未设置此属性而且 DataSet 中存在主键信息,那么在设置 SelectCommand 属性并使用 SqlCommandBuilder 的情况下,可以自动生成 UpdateCommand。 然后, SqlCommandBuilder 将生成其他任何未设置的命令。 此生成逻辑要求 DataSet 中存在键列信息。
------解决方案--------------------
简单实现了增删改,地址
http://pan.baidu.com/s/1i3vChuP