您的位置:程序门 -> .net技术 -> vb.net



ado.net的update问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


ado.net的update问题
发表于:2007-05-11 00:18:58 楼主
今天看着教程用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#时,也遇见过这样的问题,从那时到现在,已经重装过多次系统了,现在正在怀疑是不是偶用的软件问题……
发表于:2007-05-11 08:54:381楼 得分:0
看看数据库里的表有没有主键,没有的话是不行的,就要自己定义更新的语句
发表于:2007-05-12 17:12:582楼 得分:0
估计是主键约束
发表于:2007-05-12 21:37:103楼 得分:0
该回复于2007-12-21 19:30:06被管理员或版主删除
发表于:2007-05-13 14:17:074楼 得分:0
http://user.qzone.qq.com/784866864
发表于:2007-06-10 18:39:215楼 得分:0
楼上的qq登录不了


应该不是主键约束问题,因为我用的是系统数据库!
发表于:2007-08-06 17:23:126楼 得分:0
我也抄书上的例子试过一次,有时能添加,有又添不进去,删除没问题。不知道什么原因。
发表于:2007-08-06 17:27:297楼 得分:0
建议自己拼写sql


快速检索

最新资讯
热门点击