数据表中有如下记录
ID NAME
1 XX
2 YY数据集Ds_Users中有一个Users的表对应上表。Ds_Users.Table["Users"].Rows[0]["ID"]=1;
Ds_Users.Table["Users"].Rows[0]["NAME"]="XX1";
Ds_Users.AcceptChanges();然后调用数据适配器的Update(Ds_Users,"Users")更新第一条记录。
为什么会更新不起?
ID NAME
1 XX
2 YY数据集Ds_Users中有一个Users的表对应上表。Ds_Users.Table["Users"].Rows[0]["ID"]=1;
Ds_Users.Table["Users"].Rows[0]["NAME"]="XX1";
Ds_Users.AcceptChanges();然后调用数据适配器的Update(Ds_Users,"Users")更新第一条记录。
为什么会更新不起?
DataAdapterOBJ.UpdateCommand=cBuild.GetUpdateCommand();DataAdapterOBJ.Update(Ds_Users,"Users");
如果不愿意写的话,可以直接用commandbuilder
{
Ds_Users.Table["Users"].Rows[0]["ID"]=1;
Ds_Users.Table["Users"].Rows[0]["NAME"]="XX1";
Ds_Users.AcceptChanges();
Ds_Users.AcceptChanges();
if(UpdateNews(Ds_Users))
this.BindData();//这是自定义的
}----------------------------------------------------------
public bool UpdateNews(ds_News news)
{
if(news.Tables["Users"].Rows.Count<1)
return false;
try
{
OleDbCommandBuilder cb=new OleDbCommandBuilder(da_News);
this.da_News.UpdateCommand=cb.GetUpdateCommand();
this.da_News.Update(news,"Users");
news.AcceptChanges();
return true;
}
catch
{
return false;
}
}
那一定是传数据时的问题
ID不是主键在数据库中ID绝对是主键,
是不是要在数据集中也要设置一下?
你跟踪一下生成的命令
" OR ? IS NULL AND 作者 IS NULL) AND (时间 = ? OR ? IS NULL AND 时间 IS NULL) AND (标题 =" +
" ? OR ? IS NULL AND 标题 IS NULL) AND (访问总数 = ? OR ? IS NULL AND 访问总数 IS NULL)";
cb.GetUpdateCommand().CommandText
的内容是什么
"UPDATE 新闻 SET 标题 = ? , 访问总数 = ? , 内容 = ? , 时间 = ? , 作者 = ? WHERE ( (编号 = ?) AND ((? = 1 AND 标题 IS NULL) OR (标题 = ?)) AND ((? = 1 AND 访问总数 IS NULL) OR (访问总数 = ?)) AND ((? = 1 AND 时间 IS NULL) OR (时间 = ?)) AND ((? = 1 AND 作者 IS NULL) OR (作者 = ?)) )"