vb.net连接数据库(oo4o),select for update的问题

zhuj6 2017-03-22 03:04:43
环境是:win8.1+vs2015

以下代码:
gobjSession = CreateObject(sOLE)
gobjDatabase = gobjSession.DbOpenDatabase(pb_sOraServis, pb_sUserInfo, 0)

gobjSession.BeginTrans()

dynasets = gobjDatabase.CreateDynaset("select * from TEST_VW for update ", 0)
dynasets.close()
dynasets = Nothing

gobjSession.CommitTrans()

gobjSession.CommitTrans()这里,会报错,如下:



如果把上面sql中的for update去掉的话,就没有问题。

ps:表是没有被锁的

谁能说说这是为什么?
...全文
167 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_24897233 2017-03-23
  • 打赏
  • 举报
回复
作者朋友 最终解决了么?
Tiger_Zhao 2017-03-23
  • 打赏
  • 举报
回复
可能游标设置不正确。
找找帮助,是不是有地方设置游标类型。
zhuj6 2017-03-23
  • 打赏
  • 举报
回复
我也更新了,但是还是一样的错误。现在我都开始怀疑是否是引用的dll有问题了
Tiger_Zhao 2017-03-23
  • 打赏
  • 举报
回复
就是你应该对dynasets遍历一遍(说不定还需要有更新操作),对象模型没有考虑过这类吃饱了没事做的调用。
zhuj6 2017-03-23
  • 打赏
  • 举报
回复
第一次做vb.net,我写的这个就是测试用的,中间不做任何处理,只是锁一下表然后就commit。 还有,没有dynasets.open()这个方法啊
zhuj6 2017-03-23
  • 打赏
  • 举报
回复
使用了替代方法,因为是锁表,使用了: gobjDatabase.ExecuteSQL("Lock table table_name in exclusive mode") 这个也是锁表的,然后把上面SQL中的for update删掉,然后就可以了
Tiger_Zhao 2017-03-22
  • 打赏
  • 举报
回复
因为你没有调用 dynasets.open() 啊!
对象模型内部怎么处理的不知道;反正按照成功的例子做,中间不要拍脑袋地省略步骤。

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧