C# dataAdapter.Update 的问题
我有段(C#)修改数据表的代码,修改没有提示出错,可修改不成功,一直是以前的数据,请大虾们帮帮忙,谢谢!代码如下:oledbConnectionoleCon=newole...
我有段(C#)修改数据表的代码,修改没有提示出错,可修改不成功,一直是以前的数据,请大虾们帮帮忙,谢谢!代码如下:
oledbConnection oleCon=new oledbConnection();
oledbCommand oleCmd=new oledbCommand();
oledbDataAdapter oleda=new oledbDataAdapter();
DataSet ds=new DataSet();
oleCon.ConnectionString="Provider=Microsoft.Jet.Oledb.4.0;database =d:\\data\\student.mdb";
oleCon.Open();
string strCom="select * from student";
oleCmd.Connection=oleCon;
oleDbCommand oleCom =new OleDbCommand(strCom, oleCon);
oleda.SelectCommand = oleCom;
oleda.UpdateCommand = oleCom;
oleda.Fill(ds, "student");
MessageBox.Show(ds.Tables["student"].Rows[0].ItemArray[1].ToString());
ds.Tables["student"].Rows[0].ItemArray[1] = "Sam";//感觉这一句不起作用
MessageBox.Show(ds.Tables["student"].Rows[0].ItemArray[1].ToString());
oleda.Update(ds, "student");
oleCmd.Dispose();
olecon.Dispose();
ds.Dispose();
oleda.Dispose();
//对了,关闭对象时 close() 与 Dispose() 有什么不同,我觉得差不多,可怎么会有两个方法
对的肯定是漏了什么,请大侠不啬赐教! 展开
oledbConnection oleCon=new oledbConnection();
oledbCommand oleCmd=new oledbCommand();
oledbDataAdapter oleda=new oledbDataAdapter();
DataSet ds=new DataSet();
oleCon.ConnectionString="Provider=Microsoft.Jet.Oledb.4.0;database =d:\\data\\student.mdb";
oleCon.Open();
string strCom="select * from student";
oleCmd.Connection=oleCon;
oleDbCommand oleCom =new OleDbCommand(strCom, oleCon);
oleda.SelectCommand = oleCom;
oleda.UpdateCommand = oleCom;
oleda.Fill(ds, "student");
MessageBox.Show(ds.Tables["student"].Rows[0].ItemArray[1].ToString());
ds.Tables["student"].Rows[0].ItemArray[1] = "Sam";//感觉这一句不起作用
MessageBox.Show(ds.Tables["student"].Rows[0].ItemArray[1].ToString());
oleda.Update(ds, "student");
oleCmd.Dispose();
olecon.Dispose();
ds.Dispose();
oleda.Dispose();
//对了,关闭对象时 close() 与 Dispose() 有什么不同,我觉得差不多,可怎么会有两个方法
对的肯定是漏了什么,请大侠不啬赐教! 展开
展开全部
楼上的,楼主的方法可行,只是漏了某些而已,你没见过只能说明你学的不够。
update是非常好用的
OleDbCommandBuilder objcmd=new...;这个楼主没有写;
然后
oleda.UpdateCommand = objcmd.GetUpdateC...
ds.Tables["student"].Rows[0].ItemArray[1] = "Sam"//这句你换成ds.Tables["student"].Rows[0][1]看看,如果结果还是不行的话就应该是其他原因了
dispose和close确实是差不多的,close里面是为其他习惯c++等人开发的,网上有很多说吗,你可以去看看
update是非常好用的
OleDbCommandBuilder objcmd=new...;这个楼主没有写;
然后
oleda.UpdateCommand = objcmd.GetUpdateC...
ds.Tables["student"].Rows[0].ItemArray[1] = "Sam"//这句你换成ds.Tables["student"].Rows[0][1]看看,如果结果还是不行的话就应该是其他原因了
dispose和close确实是差不多的,close里面是为其他习惯c++等人开发的,网上有很多说吗,你可以去看看
展开全部
应该没有错误 你说的不起作用是否是因为MessageBox.Show(ds.Tables["student"].Rows[0].ItemArray[1].ToString());现实的结果和原来一样?这句现实的时候
oleda.Update(ds, "student");
还未执行。
如果库里的数据也没编的话吧Dispose() 换成close()试试
close() 就是关闭,之后可以用open打开接着用
Dispose() 是销毁,想用的话要新建
oleda.Update(ds, "student");
还未执行。
如果库里的数据也没编的话吧Dispose() 换成close()试试
close() 就是关闭,之后可以用open打开接着用
Dispose() 是销毁,想用的话要新建
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
ds.Tables["student"].Rows[0].ItemArray[1] = "Sam";不可以这样去改变数据集中某个表中字段的值,你这个利用适配器直接更新我没用过,还是老老实实地写update语句吧。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我也经常犯这样的错误,你的代码中有了连接,命令对象,适配器,和数据集,这对于查询到数据集和执行spl语句已经够了,但是你使用了UpDate方法就的添加OleDbCommandBuilder对象来关联数据库和当地数据集了。
参考资料: 如果您的回答是从其他地方引用,请表明出处
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询