VB ADO 访问 ORACLE 之 游标的疑问?

AndyYong 2006-08-02 10:30:50
Private CONN As New Connection
Private RS As New Recordset

Private Sub Form_Load()

'ORACLE
CONN.Open "Provider=OraOLEDB.Oracle.1;Password=sa;Persist Security Info=True;" & _
"User ID=sa;Data Source=AAA"

RS.CursorLocation = adUseClient

RS.Open "SELECT * FROM TABLE2", CONN, adOpenDynamic, adLockOptimistic

RS.AddNew
RS.Fields("DEMO") = "OK"
RS.Update

Debug.Print "------------------"
Debug.Print RS.Fields("ID")
Debug.Print RS.AbsolutePosition

End Sub

'---------------------------------------------------------------------------
'TABLE2 结构 (ID,DEMO) ID (序列+触发器) 插入记录前自动递增 DEMO VARCHAR2(10)
'---------------------------------------------------------------------------

'--------------------
'访问 ORACLE 结果
'--------------------
'4
'4

换成SQL SERVER

'CONN.Open "Provider=SQLOLEDB.1;User ID=sa;Password =;Initial Catalog=AAA;Data;" & _
"Source=Server1"
'--------------------
'访问 SQL SERVER 结果
'--------------------
'0
'4


谁能解释这个问题。
...全文
324 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
ID (序列+触发器) 插入记录前自动递增
对ID是用触发器进行递增的?
建议还是用数据库自带的自增型字段.ID不一定非要和记录的行位置相同,很多时候你带条件查询出来的结果,ID都不可能和记录行位置相等.

另外,有没有试过连续插入几条,看看每插入一条之后显示什么结果?
Yang_ 2006-08-07
  • 打赏
  • 举报
回复
对于adOpenDynamic一直不很理解

我觉得问题是虽然数据库里对id已经附值,但由于没有取出,在客户端还是不一定看到,用requery可以保证看到,而adOpenDynamic不知道什么时候会刷新

Yang_ 2006-08-07
  • 打赏
  • 举报
回复

RS.Update
后加句

rs.requery

damocles 2006-08-04
  • 打赏
  • 举报
回复
这个现象应该是 oracle 和 ms sql 的ID 字段定义的区别

ID (序列+触发器) 不明确阿

ms sql 的id字段 如何定义的也不清楚


如果实在觉的迷惑,干脆用VB生成序列

1,217

社区成员

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

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