关于数据及更新的试验(你可能没有注意到哦!)

Kain 2003-12-12 08:44:27
数据库中有张学生表,其中有个自增的ID列

从数据库中用SqlDataApdater Fill一个Dataset

向数据集添加一条数据,然后更新数据。

问题是:更新数据及完毕后,要重新更新Dataset,刷新新添加数据行的id列。

更新的时候用了两种办法
1、用SqlDataApdater控件更新数据,问题可以解决
2、用SqlCommandBuilder自动实现SqlDataApdater,问题暂时解决不了

察看msdn的一些相关问题,并作了如下比较:

'====这是窗体自动生成的代码============
Me.SqlInsertCommand1.CommandText = "INSERT INTO Student(name, age, sex, address, email) VALUES (@name, @age, @sex, @a" & _
"ddress, @email); SELECT name, age, sex, address, email, id FROM Student WHERE (n" & _
"ame = @name)"



'===========这是用cb生成的insertCommand的CommandText
"INSERT INTO student( name , Number , pwd , sex , mail , SchoolID , picture , qestion , answer , gradeID , classID , bornDate , reportSchool , homeAddress , homeTel , genearchName , area , text ) VALUES ( @p1 , @p2 , @p3 , @p4 , @p5 , @p6 , @p7 , @p8 , @p9 , @p10 , @p11 , @p12 , @p13 , @p14 , @p15 , @p16 , @p17 , @p18 )"

'=====
二者比较前者比后者多了一段select语句,手动加上以后

"INSERT INTO student( name , Number , pwd , sex , mail , SchoolID , picture , qestion , answer , gradeID , classID , bornDate , reportSchool , homeAddress , homeTel , genearchName , area , text ) VALUES ( @p1 , @p2 , @p3 , @p4 , @p5 , @p6 , @p7 , @p8 , @p9 , @p10 , @p11 , @p12 , @p13 , @p14 , @p15 , @p16 , @p17 , @p18 );SELECT name, age, sex, address, email, id FROM Student WHERE (name = @P1)"

id列依然没有自动更新。


'''''代码如下
Dim da As New SqlClient.SqlDataAdapter("select * from student", mcon)
Dim cb As New SqlClient.SqlCommandBuilder(da)

cb.RefreshSchema() '这条语句不知道放在那个位置比较好

da.UpdateCommand = cb.GetUpdateCommand
da.DeleteCommand = cb.GetDeleteCommand
da.InsertCommand = cb.GetInsertCommand
da.UpdateCommand.UpdatedRowSource = UpdateRowSource.Both
da.InsertCommand.UpdatedRowSource = UpdateRowSource.Both

da.InsertCommand.CommandText &= ";SELECT name, age, sex, address, email, id FROM Student WHERE (name = @P1)"
da.Update(ds)

MsgBox("over")



...全文
79 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Kain 2003-12-15
  • 打赏
  • 举报
回复
不是这样的

跟表的名称是美关系的
Kain 2003-12-12
  • 打赏
  • 举报
回复
自己写的话不用sqlcommandbuider
是不是都是更新每一表都要自动构造insertcommand、updatecommand、deletecommand
如果这样的话工作量是不是很大。

用sqldataAdapter控件更新数据集可以自动刷新更新过的数据。同时这样有个
好处就是处理并发冲突。

如果不用控件那怎么用代码实现更新数据集的自动刷新呢,
UpdatedRowSource 属性不是很好理解。
控件设置UpdatedRowSource 属性可以看到更新数据集得不一样
但是用代码控制UpdatedRowSource 属性效果都一样,不知道那里还要控制。

请高手指点迷津。
dldl 2003-12-12
  • 打赏
  • 举报
回复
还是自己写得好,我都是用自己写的。
Soking 2003-12-12
  • 打赏
  • 举报
回复
为何要这么麻烦?
KimSoon98 2003-12-12
  • 打赏
  • 举报
回复
还是自己写的好,保险,性能还好
twtftbkgd 2003-12-12
  • 打赏
  • 举报
回复
帮你顶啊!
rock1981 2003-12-12
  • 打赏
  • 举报
回复
SqlDataApdater
gujianxin 2003-12-12
  • 打赏
  • 举报
回复
要更新DataSet,必须使用获取DataSet的SqlDataApdater
houlinghouling 2003-12-12
  • 打赏
  • 举报
回复
我也没有遇到过,一般都是自己来写sql。不用自动生成的!
chinanewway 2003-12-12
  • 打赏
  • 举报
回复
哈哈,俺还一直没有注意过这个,一般都是自己写代码,所以不曾在这个问题。
minghaochen 2003-12-12
  • 打赏
  • 举报
回复
个人经验:
SqlDataApdater Fill Dataset的那个表名要跟数据库的表名完全一致。
即:SqlDataApdater.SelectCommand.CommandText="Selcet fID,fName from Student"
~~~~~~~~
SqlDataApdater.Fill(ds,"Student")
~~~~~~~~~~
上面有下划线的那两个要一致,就ok啦。
Kain 2003-12-12
  • 打赏
  • 举报
回复
up

111,092

社区成员

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

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

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