注册 登录
编程论坛 VB.NET论坛

关于数据原更新的问题

wangfuli 发布于 2006-06-03 10:10, 2599 次点击

最近我在做数据库的时候发现这样的问题:
1、修改dataset中的数据中,可以更新给数据原:
Dim da As new OleDbDataAdapter(str,cnnstr)
da.fill(ds,"表")
ds.tables("表").rows(0)(0)="sadf"
Dim db As New OleDbCommandBuilder(da)
da.update(ds,"表")
2、要是删除dataset中的数据时,例如删除一行更新不了数据原:
Dim da As new OleDbDataAdapter(str,cnnstr)
da.fill(ds,"表")
ds.tables("表").rows.removeat(0)
Dim db As New OleDbCommandBuilder(da)
da.update(ds,"表")
上面说的方法,如果要是用绑定技术的话,就不存在这样的问题,请问为什么了?

12 回复
#2
蓝魂2006-06-06 11:05
Dim da As new OleDbDataAdapter(str,cnnstr)
da.fill(ds,"表")
ds.tables("表").rows.removeat(0)
Dim db As New OleDbCommandBuilder(da)
'因为你前面用了removeat(0)删除了数据集的一个数据,用了update后它会执行一个delete命令删除数据库的数据.
'你在update之前应加上da.DeleteCommand = db.GetDeleteCommand()
da.update(ds,"表")
#3
wangfuli2006-06-06 11:30
楼上的兄弟,先谢了,不过我试了,好象还不可以了,能不能说的在清楚点了

[此贴子已经被作者于2006-6-6 13:14:37编辑过]


#4
蓝魂2006-06-07 10:55
发具体代码看看,上面的代码应该没错了
#5
wangfuli2006-06-08 12:29
我也认为是没错了,我查了资料也是这么写的了,但是就是更新不了,我很是迷茫
#6
wangfuli2006-06-09 20:39

不好意思,我有点没把问题说清楚了,
重要的问题在于:把数据绑定在datagrid 上,在datagrid中按delete键删除一行,然后用update,就可以更新数据库;但是要是不在datagid中删除,用ds.tables().rows.removeat(),在用update,就更新不了数据库了。
这到底为什么了,请说的清楚点了

[此贴子已经被作者于2006-6-9 20:41:37编辑过]

#7
蓝魂2006-06-10 23:05
这下有点明白哪里错了,是不是你没有加
if not ispostback then
数据绑定datagrid
end if

如果表中字段用了关键字一样会出错(同时用db.GetDeleteCommand之类时),例如count,sum

[此贴子已经被作者于2006-6-11 0:08:32编辑过]

#8
wangfuli2006-06-12 17:22

那在datagrid中删除一行和用ds.tables().rows.removeat()删除一行到底有什么不同了

[此贴子已经被作者于2006-6-12 17:32:01编辑过]

#9
蓝魂2006-06-12 22:24
效果一样
#10
wangfuli2006-06-15 20:59
我试过了,你说的那个ds.table().rows.removeat()和datagrid中删除一行不一样了,datagrid中删除一行的代码应该是ds.table().rows().delete,这样的删除是两个概念了,下面是我试过两个更新数据原的代码:
这个是可以更新的代码:
ds.table("1").rows(0).delete
da.Update(ds, "1")
这个是不可以更新的代码:
ds.Tables("1").rows.removeat(0)
da.Update(ds, "1")
这两个句子ds.table("1").rows(0).delete和ds.Tables("1").rows.removeat(0),到底有什么不同了,在删除数据时、在更新数据原时有什么不同了,为什么一个可以更新数据原,一个不可以了?

#11
wangfuli2006-06-19 12:35

怎么就没人可以回答这个问题吗,斑竹呢

#12
Viviwei2006-06-19 20:22

首先,删除后不用更新.本身删除就是一条记录完全的清空.你只需要重新填充一下就KO
最简单的方法,后面加一句 dt.AcceptChanges() 表示进行改变.如果还是不行.再发信息!~
具体的,我做的.原代码如下:
Try
Dim RefreshPictureBox As Boolean = True
If bm.Position = bm.Count - 1 Then

End If

' 将记录删除
dt.Rows(bm.Position).Delete()

Dim numberRows As Integer = da.Fill(ds, "学生信息")

dt.AcceptChanges()

MessageBox.Show("成功地写回来源数据表 学生 " & vbCrLf & vbCrLf & "成功删除的记录数目: " & numberRows.ToString, "提示讯息")
Catch ex As Exception
MessageBox.Show(ex.Message, "请注意")
End Try

#13
论坛元老2008-04-02 14:46
新手,学习中,支持
1