"对于不返回任何键列信息的 SelectCommand 不支持 UpdateCommand 的动态 SQL 生成。"
下面是修改数据库的类,出错信息如题。
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 "";
}
错误出在那里,如何修改?