"对于不返回任何键列信息的 SelectCommand 不支持 UpdateCommand 的动态 SQL 生成。"

yan1617 2003-10-21 10:26:15
下面是修改数据库的类,出错信息如题。
public string Set(DateTime p_date,char c_dm,string c_xz,float n_p1,float n_q1,float n_p2,float n_q2,float n_p3,float n_q3,float n_p4,float n_q4,float n_p5,char c_bz)
{
//检查数据
string errorstr="";
if(c_dm==' '){errorstr="请提供要修改的代码!";return errorstr;}
if(p_date==DateTime.MinValue){errorstr="请输入要修改的调整日期!";return errorstr;}
if(c_bz==' ')
{
errorstr=errorstr+"请输入要修改的项目,您没有提供要修改的项目";
return errorstr;
}

if (cnstr=="") {errorstr=errorstr+"连接字串为空,请检查设置";return errorstr;}

//定位并修改
dbcn = new SqlConnection(cnstr);
SqlDataAdapter da = new SqlDataAdapter("select * from price where c_dm='"+c_dm+"' and convert(char(10),p_date,120)='"+p_date.ToShortDateString()+"'",dbcn);
SqlCommandBuilder dbcm = new SqlCommandBuilder(da);
DataSet dbds = new DataSet();

try
{
dbcn.Open();
da.Fill(dbds,"price");

if (dbds.Tables["price"].Rows.Count<=0)
{
errorstr=errorstr+"数据库中无包含此列的数据";
return errorstr;
}

DataTable tbl = dbds.Tables["price"];
DataRow dr = tbl.Rows[0];
dr.BeginEdit();

if(c_dm!=' ')
dr["c_dm"]=c_dm;
if(p_date!=DateTime.MinValue)
dr["p_date"]=p_date;
if(c_xz!="")
dr["c_xz"]=c_xz;
if(n_p1!=' ')
dr["n_p1"]=n_p1;
if(n_q1!=' ')
dr["n_q1"]=n_q1;
if(n_p2!=' ')
dr["n_p2"]=n_p2;
if(n_q2!=' ')
dr["n_q2"]=n_q2;
if(n_p3!=' ')
dr["n_p3"]=n_p3;
if(n_q3!=' ')
dr["n_q3"]=n_q3;
if(n_p4!=' ')
dr["n_p4"]=n_p4;
if(n_q4!=' ')
dr["n_q4"]=n_q4;
if(n_p5!=' ')
dr["n_p5"]=n_p5;
if(c_bz!=' ')
dr["c_bz"]=c_bz;


dr.EndEdit();

// da.Update(dbds,"tbl");
da.Update(dbds,"price");

}
catch(Exception ex)
{
return ex.Message;
}
finally
{
dbcn.Close();
dbcn.Dispose();
}
return "";
}
错误出在那里,如何修改?
...全文
3324 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
张张好 2003-10-21
  • 打赏
  • 举报
回复
1、查一下你的price表定义主键了吗?
2、在da.Fill(dbds,"price");之后加:
da.UpdateCommand = dbcm.GetUpdateCommand;
在da.Update(dbds,"tbl");前加:
dbcm.RefreshSchema();
顾君彦 2003-10-21
  • 打赏
  • 举报
回复
select * 改一下,把字段都写出来
ivt 2003-10-21
  • 打赏
  • 举报
回复
没有看上面的代码,
但可以肯定错误发生在
dataset
因为dataset没有调置主键,所以自动生成SQL语句失败
,请为dataset设置主键

110,499

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧