SQLdataAdapter 更改dataset里面数据内容求助

weixin_37583883 2019-06-15 05:20:21
学习SQLdataAdapter 时候遇到问题,
string constr = @"Server=WANGDEFU-PC\WANG;user=sa;pwd=1;database=E_market"; //E_market是数据库
SqlConnection mysqlcon = new SqlConnection(constr); //新建类

mysqlcon.Open(); //打开数据库
textBox1.Text = "数据库被打开";
string sql = "select * from myinfor"; //myinfor 数据表
SqlDataAdapter myda = new SqlDataAdapter(sql, mysqlcon);
DataSet myds = new DataSet();
myda.Fill(myds, "Userinfo1"); //我理解是将查询结果映射到Userinfo1里面了,而且这个名字可以随便起?

string updatesql = "update Userinfo1 set ID=45 where ID=100"; //操作内存里面的Userinfo1数据表把ID=100的行改成ID=45
myda.UpdateCommand = new SqlCommand(updatesql, mysqlcon);

myda.Update(myds, "Userinfo1");

问题是运行程序没有报错,但是数据表也没有更新?
我的目的是
1首先把数据库里面的myinfor数据表映射到内存dataset里面的Userinfo1表中
2针对Userinfo1表进行修改"update Userinfo1 set ID=45 where ID=100";
3.修改后同步到实际的数据库表myinfor。
还请高手帮忙解答具体该如何做谢谢
...全文
33 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
eaqpi 2019-06-15
  • 打赏
  • 举报
回复
引用 3 楼 weixin_37583883 的回复:
[quote=引用 2 楼 eaqpi 的回复:]
1-你要修改的是你获取的DATATABLE,写句SQL 把他弄成UPDATECOMMAD 毫无意义。

2-updatecommand 用处是,当你修改了datatabel,那么datarow的属性变成了 edit?还是UPdate什么的hi后,更新到数据里使用的逻辑。如果没有修改datatable,这句语句不会触发。

什么时候会用到updatecommand 这个指令啊?上网看了半天没看懂。

[/quote]

一共有4条语句,addnew,update和delete,select
---

在datatable中使用Addnew的时候
如:dim datarow row =dt.newrow
row("id")=333
dt.rows.add(row)

这时候,你用ds.update(dt),就会使用addnew的commmand。

用那条语句是根据datatable的row的状态来选择的。作用是用来操作datatable的,可以自动生成,

也可自己编写出奇怪的需求来,比如删除datatable中的行,而deletecommand 可能不用删除语句,而是更新或新增。

你可以让sqldataAdapter自动生成 这4条语句。 而你的操作,只要修改你的数据表就行了。

记得更新前别用accept,就行。











weixin_37583883 2019-06-15
  • 打赏
  • 举报
回复

引用 2 楼 eaqpi 的回复:
1-你要修改的是你获取的DATATABLE,写句SQL 把他弄成UPDATECOMMAD 毫无意义。

2-updatecommand 用处是,当你修改了datatabel,那么datarow的属性变成了 edit?还是UPdate什么的hi后,更新到数据里使用的逻辑。如果没有修改datatable,这句语句不会触发。

什么时候会用到updatecommand 这个指令啊?上网看了半天没看懂。

eaqpi 2019-06-15
  • 打赏
  • 举报
回复
1-你要修改的是你获取的DATATABLE,写句SQL 把他弄成UPDATECOMMAD 毫无意义。

2-updatecommand 用处是,当你修改了datatabel,那么datarow的属性变成了 edit?还是UPdate什么的hi后,更新到数据里使用的逻辑。如果没有修改datatable,这句语句不会触发。



eaqpi 2019-06-15
  • 打赏
  • 举报
回复
读取没问题,

修改 弄句sql毛用没有。

for each row as datarow in Userinfo1 .rows
if row("ID") = 100 THEN ROW("ID")=45

NEXT
myda.Update(myds, "Userinfo1")


110,538

社区成员

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

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

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