关于数据及更新的试验(你可能没有注意到哦!)
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")