vb6 oracle9i 应用程序,逻辑错误记录集保持为空
Posted
技术标签:
【中文标题】vb6 oracle9i 应用程序,逻辑错误记录集保持为空【英文标题】:vb6 oracle9i application, logical error-recordset remains empty 【发布时间】:2012-09-13 18:25:40 【问题描述】:目前我正在开展一个项目,该项目迫使我在我的应用程序中使用 Vb6 作为前端并使用 Oracle 9i 作为后端。我需要从 oracle 中的表中检索数据,并以 VB6 形式显示。我为此使用了一个记录集,但由于某种原因,即使相关表中存在有效记录,它也不包含任何记录。谁能告诉我怎么了?任何帮助,将不胜感激。我的代码如下-
Private Sub Command1_Click()
Dim sql As String
Set rs = New ADODB.Recordset
sql = "select test23.phoname from test23 where test23.ops='" + Text1.Text + "'"
rs.Open sql, con, adOpenStatic, adLockOptimistic
If rs.EOF = False Then
Form7.Show
Form7.Label2.Caption = rs.Fields("phoname")
End If
End Sub
if 语句从不执行,因为记录集总是看起来是空的。如果我删除 EOF 条件,我会收到运行时错误 3021。我的 sql 查询有问题吗?表 test23 已经存在于我的 oracle 数据库中,其属性为 serialno、phoname 和 ops。 谢谢- 罗恩
【问题讨论】:
我不太会用SQL,但是之前没见过用table.field语法。你确定它是有效的?你试过SELECT phoname FROM test23 WHERE ops='" + Text1.Text + "'"
吗?
【参考方案1】:
几年前,我自己也曾为此苦苦挣扎。问题可能出在几个方面:特别是连接、Oracle 驱动程序、Oracle 主目录或查询本身。
我强烈建议您下载免费版本的 TOAD,这将允许您测试您的连接(我假设是某种 ODBC),然后您可以使用 TOAD 手动执行查询。
你有什么例外吗?
希望您可以由此更正您的代码/连接/查询。
祝你好运
【讨论】:
【参考方案2】:我还要指出 adoOpenStatic 和 adoLockOptimistic 是互斥的属性值,因为乐观锁定仅适用于可更新的记录集,而静态记录集不可更新(在使用 adoLockBatchOptimistic 的批处理模式下除外)。这可能会以某种方式混淆 Oracle OLEDB 提供程序。
【讨论】:
以上是关于vb6 oracle9i 应用程序,逻辑错误记录集保持为空的主要内容,如果未能解决你的问题,请参考以下文章