学生信息管理系统问题(二)

自从开始做学生信息管理系统以来,问题层出不穷,一个又一个,不过这也正好给了我学习的机会,在不断地探索与错误中开始成长,正是因为出错了,我才会上网查找,以寻求答案,在这个过程中,本来不熟悉的东西也慢慢地开始熟悉了,错误教会了我们怎么去成长,以及如何向更好地方面去发展。

昨天遇到了一个问题,一个很奇怪的问题,我也不知道怎么回事,请教了同学,和同学奋战了一个半的小时,终于皇天不负有心人,在快下课的时候,终于解决了。想知道问题究竟是什么吗?好吧,我来说说。

在操作数据库的时候,出现的问题是:数据库显示添加成功,但是数据信息添加不到数据库内,但是又可以读到数据库里的内容,也就是说连接到了数据库,但是无法实现对数据库的增删改等,查了半天,刚开始查到的原因是添加学籍信息的模块里mrc.addnew没有写上,但是发现即使写上了,也不可以,于是最后经过同学的不断尝试,原来就是ExecuteSQL函数在定义的时候出了问题。具体出现的问题是这样的,原来我的代码是:

Public Function ExecuteSQL(ByVal SQL As String, MsgString As String) As ADODB.Recordset
    Dim cnn As ADODB.Connection
    Dim rst As ADODB.Recordset
    Dim sTokens() As String
    
    On Error GoTo ExecuteSQL_Error
    sTokens = Split(SQL)

    Set cnn = New ADODB.Connection
    cnn.Open ConnectString

    If InStr("INSERT,DELETE,UPDATE", UCase$(sTokens(0))) Then cnn.Execute SQL  
        MsgString = sTokens(0) & "query successful"
    Else
        Set rst = New ADODB.Recordset 
    rst.Open Trim$(SQL), cnn, adOpenKeyset, adLockBatchOptimistic
……

而正确的代码与我的只是相差一个属性。却导致了相反的结果,问题就出在最后一句,最后一个属性值上了,正确的是:

 rst.Open Trim$(SQL), cnn, adOpenKeyset, adLockOptimistic
没有错,我把adLockOptimistic写成了adLockBatchOptimistic,结果就错了,也不是错了,就是没有得出自己想要的结果。

看到了吗?两者的相似度还是很大的,只是一个不小心,就使得出现了相反的结果。进一步解释来说:
adLockOptimistic      当数据源正在更新时,系统不会锁定其他用户的动作,其他用户可以对数据进行增、删、改操作 。
adLockBatchOptimistic 当数据源正在更新时,其他用户必须将CursorLocation改为adUdeClientBatch才能对数据进行增、删、改的操作。
所以即使我已经连上了数据库,而且有把添加的信息送回去这个代码:Set mrc = ExecuteSQL(txtSQL, MsgText),可是函数如果定义错了,数据库还是不允许我对其进行增、删、改的操作,做什么事情都得认真,思考也必须严谨,如果有人和我的错误一样,请仔细核对一下模块里的内容,也许在你不注意的地方就是你出错地方。在此特地谢谢帮我查找错误的同学,奋战一个半小时,“一清”同学,谢谢了~



                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值