none
关于VS中的数据库编程 RRS feed

  • 问题

  •  

    1.修改难度名称
      AppInfo.rst.Open("select 难度名称 from 难度表 where 难度号 = " & diffNum & "", _
      AppInfo.Conn, ADODB.CursorTypeEnum.adOpenStatic,ADODB.LockTypeEnum.adLockBatchOptimistic, 
      ADODB.CommandTypeEnum.adCmdText)
         If AppInfo.rst.RecordCount > 0 Then
              AppInfo.rst.MoveFirst()
               With AppInfo.rst
                            .Fields("难度名称").Value = diffName
                            .Update()
                 End With
          MsgBox("难度名称已修改。", MsgBoxStyle.Information, "成功27")
          AppInfo.rst.Close()


    2.添加难度名称
      AppInfo.rst.Open("select 难度名称 from 难度表 ", _
      AppInfo.Conn, ADODB.CursorTypeEnum.adOpenStatic,   
    ADODB.LockTypeEnum.adLockBatchOptimistic,  ADODB.CommandTypeEnum.adCmdText)
                    With AppInfo.rst
                        .AddNew()
                        .Fields("难度名称").Value = diffName
                        .Update()
                    End With
                    MsgBox("难度名称已添加。", MsgBoxStyle.Information, "成功35")
                    AppInfo.rst.Close()


    3.删除难度名称
      AppInfo.rst.Open("select 难度名称 from 难度表 ", _
      AppInfo.Conn, ADODB.CursorTypeEnum.adOpenStatic,   

    ADODB.LockTypeEnum.adLockBatchOptimistic,  ADODB.CommandTypeEnum.adCmdText)
                    With AppInfo.rst
                         .delete()
                    End With
                    MsgBox("难度名称已添加。", MsgBoxStyle.Information, "成功35")
                    AppInfo.rst.Close()

    向各位高手请教,我用Visual Studio 搞VB课程设计,在对Access中的“难度表”实施上面三种操作时,程序每次提示操作成功,但数据库中的信息根本没变,有哪位高手知道其中的缘由?或许有更好的方法,麻烦指点迷津? 非常感谢!!!


     

    2008年3月30日 12:14

答案

  • 调试的时候会将ACCESS数据库文件复制到bin目录然后对bin目录的副本进行操作,当你下次再调试的时候又会重复次操作~~这样你会误以为数据库信息没有改变·~~到bin目录下执行生成的文件就可以看出来啦~~

    2008年3月31日 7:21
    版主

全部回复

  • 你是在用ASP开发吗?你用ADO的记录集,在Open的时候有很多选项,游标类型不同,可能导致你操作的实际上是数据库中的缓存记录或者快照记录,而非实际得记录,具体好久没用ADO以及从来没有直接使用RecordSet来更新数据库,所以没法提供准确解决方法。

    建议使用Sql语句来更新,比如使用

    Update 难度表 Set ... Where 难度号 = ...

    delete 难度表 where 难度号 = ...

    之类的Sql语句来执行更新、删除操作。

     

    2008年3月30日 13:55
    版主
  •  

    adLockBatchOptimistic

    换成

    adLockOptimistic

    2008年3月31日 1:36
    版主
  •  

    哦,原来这样啊,

    那是用conn.execute Update 难度表 Set ... Where 难度号 = ...,参数1,参数2

              conn.execute  delete 难度表 where 难度号 = ...,参数1,参数2

    但是 execute 后面还要参数,这参数搞不定,麻烦指点一下,谢谢

    2008年3月31日 1:59
  • 这两个之间它们有什么区别啊?

    2008年3月31日 2:02
  • 调试的时候会将ACCESS数据库文件复制到bin目录然后对bin目录的副本进行操作,当你下次再调试的时候又会重复次操作~~这样你会误以为数据库信息没有改变·~~到bin目录下执行生成的文件就可以看出来啦~~

    2008年3月31日 7:21
    版主
  • 这是不是调试的时候,对数据库所作的更改,在程序退出的时候又会被还原,所以就看不到数据库信息变了。如果是运行的话,不是调试,就不会出现这种情况,是不是?

    呵呵,还是非常感谢你,让我跳出了一个误区。

     

    2008年4月1日 7:55