通过DataSet 更新数据库 报错

以下是我的方法publicDataSetUpdateByDataSet(DataSetds,stringstrTblName){SqlConnectionconn=dat... 以下是我的方法

public DataSet UpdateByDataSet(DataSet ds, string strTblName)
{
SqlConnection conn = data_con.getcon();
SqlDataAdapter myAdapter;
string strSQL = "select * from "+ strTblName;
SqlCommand myCommand = new SqlCommand(strSQL, conn);
myAdapter.SelectCommand = myCommand;

SqlCommandBuilder myCommandBuilder = new SqlCommandBuilder(myAdapter);
try
{
lock (this) //处理并发情况(分布式情况)
{
myAdapter.Update(ds.Tables[0]);
}
}

catch (Exception err)
{
conn.Close();
throw err;
}

myAdapter.Fill(ds);

return ds; //数据集的行状态在更新后会都变为: UnChange,在这次更新后客户端要用返回的ds
}

出现一个错误

DataTable“Table”中缺少 SourceColumn“xxsk_main_ID”的 DataColumn“xxsk_main_ID”。
有主键 包含xxsk_main_ID 传递过来的DataSet ds中的table[0]不包含该列
展开
 我来答
srcss
推荐于2021-01-31 · TA获得超过176个赞
知道小有建树答主
回答量:281
采纳率:100%
帮助的人:175万
展开全部
你的表里这个字段存在否?
如果是主键你要更新的话你的参数strTblName必须有这个字段相应的值,否则无法安主键查找到相应的数据进行更新

既然是主键,那更新的时候必须得有这个参数,没有这个参数就无法给你找到相应数据
gcssjdg
2009-01-22
知道答主
回答量:22
采纳率:0%
帮助的人:0
展开全部
1. 要确保执行myAdapter.Update(ds.Tables[0])之前,由myAdapter填充ds;
2.检查所访问的数据表是否设置了主键;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
slsunjianan
2009-01-22 · TA获得超过235个赞
知道小有建树答主
回答量:335
采纳率:0%
帮助的人:164万
展开全部
你的表建的了主键没
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式