首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

ADO.NET的Update有关问题

2012-02-17 
ADO.NET的Update问题今天看着教程用VB做了一个WindowsForm程序,运行一切正常,还可以进行添加、修改,但无法

ADO.NET的Update问题
今天看着教程用VB做了一个Windows   Form程序,运行一切正常,还可以进行添加、修改,但无法把修改写入数据库,原来用C#写程序时也遇见过同样的问题,不知有那位兄弟在类似经历。
程序读的是SQL   SERVER自带的Pubs数据库,读取Stores和sales两个表,用了两个DATAADAPTER:StoresTableAdapter和SalesTableAdapter1,dataAdapter用Fill方法填充数据集:PubsDataSet,填充的代码如下:
                Me.StoresTableAdapter.Fill(Me.PubsDataSet.stores)
                Me.SalesTableAdapter1.Fill(Me.PubsDataSet.sales)
然后用BindingSource对数据进行管理,更改与添加的过程一切正常,下面是我UpdateAll的代码部分:

        Private   Sub   UpdateAll()
                'bmStores.EndCurrentEdit()
                bmStores.EndEdit()
                If   (Me.PubsDataSet.HasChanges())   Then
                        Try
                                '首先保存子数据的删除内容
                                '再保存父数据的更新内容
                                '最后再保存子数据的其它更改

                                '第一步
                                If   Not   PubsDataSet.sales.GetChanges(DataRowState.Deleted)   Is   Nothing   Then
                                        Dim   dtSalesdeletes   As   DataTable
                                        dtSalesdeletes   =   Me.PubsDataSet.sales.GetChanges(DataRowState.Deleted)
                                        Me.SalesTableAdapter1.Update(dtSalesdeletes)
                                End   If

                                '第二步
                                If   Not   PubsDataSet.stores.GetChanges(DataRowState.Deleted)   Is   Nothing   Then

                                        Me.StoresTableAdapter.Update(Me.PubsDataSet.stores)
                                End   If

                                '第三步
                                '更新添加
                                If   Not   PubsDataSet.sales.GetChanges(DataRowState.Added)   Is   Nothing   Then
                                        Dim   dtSalesAdds   As   DataTable


                                        dtSalesAdds   =   Me.PubsDataSet.sales.GetChanges(DataRowState.Added)
                                        Me.SalesTableAdapter1.Update(dtSalesAdds)
                                End   If
                                '更新修改
                                If   Not   PubsDataSet.sales.GetChanges(DataRowState.Modified)   Is   Nothing   Then
                                        Dim   dtSalesChanges   As   DataTable
                                        dtSalesChanges   =   Me.PubsDataSet.sales.GetChanges(DataRowState.Modified)
                                        Me.SalesTableAdapter1.Update(dtSalesChanges)
                                End   If

                                Me.PubsDataSet.AcceptChanges()
                                Me.btnSave.Enabled   =   False
                        Catch   ex   As   Exception
                                MessageBox.Show(ex.Message)
                        End   Try
                End   If
        End   Sub
在程序里点击按钮“btnSave”调用该函数,如果PubsDataSet的HasChanges()不为空,btnSave.Enable=True,在上面的代码中可以看到在
Me.PubsDataSet.AcceptChanges()
之后有:
Me.btnSave.Enabled   =   False
每次运行后,点击保存后,btnSave按钮也都不可用,当前显示修改成功,但打开数据库却发现并没有修改,再次运行程序,依旧是修改前的内容,偶现在正在纳闷之中,在网上也没查到类似问题,偶原来用C#时,也遇见过这样的问题,从那时到现在,已经重装过多次系统了,现在正在怀疑是不是偶用的软件问题……

[解决办法]
看看数据库里的表有没有主键,没有的话是不行的,就要自己定义更新的语句
[解决办法]
估计是主键约束
[解决办法]
我也抄书上的例子试过一次,有时能添加,有又添不进去,删除没问题。不知道什么原因。
[解决办法]
建议自己拼写SQL

热点排行