【问题标题】:VB6 and ODBC commandsVB6 和 ODBC 命令
【发布时间】:2019-11-04 13:48:47
【问题描述】:

我在这里开始了一个线程,这是该帖子的延续:Calling a Module and a Class within a Form

我找不到成功查询数据库所需的信息。我需要做的是从 Pervasive 数据库中获取单个值。我找不到要执行此操作的 ODBC 命令列表。

有人可以指点我一些处理这些 Pervasive ODBC 命令的文档吗?我正在使用 ADO ODBC 进行连接。

编辑:

我也尝试连接到 MySQL 数据库并遇到同样的错误。这是我为调用 MySQL 函数而创建的测试 Sub。 MySQL 的错误与 Pervasive 的错误相同:“Object variable or With Block variable not set”

Public Sub testMe(id)
  Dim MySqlConn As adodb.Connection 'Do I need this here or in the MySQL function?
  Set MySqlConn = ConnectMySQL()
MySqlConn.Open "SELECT * FROM test", MySqlConn, adOpenDynamic, adLockOptimistic
End Function

【问题讨论】:

  • 你连接数据库成功了吗?如果是这样,只需构建一个Select 语句来检索您需要的数据。
  • 嗨,布莱恩。问题是我无法测试连接。这是我自上周四以来一直在尝试做的事情,但找不到 Pervasive v10 数据库的 OBDC 命令。
  • 我不清楚您所说的“测试连接”是什么意思。根据您之前帖子中的连接字符串,您的连接是否打开?
  • @BrianMStafford,我不确定它是否开放。

标签: vb6 pervasive


【解决方案1】:

首先,您需要连接到数据库。根据this website,连接字符串将采用以下格式:

Driver={普遍的 ODBC 客户端 接口};ServerName=myServerAddress;dbq=@dbname;

从您上一篇文章中的代码开始,可以这样扩展:

Option Explicit

Public Function getEmployee() As String
   Dim MyConnection As ADODB.Connection
   Dim CM As ADODB.Command
   Dim RS As ADODB.Recordset

   Set MyConnection = ConnectSQL()

   'one way using command objects
   Set CM = New ADODB.Command
   Set CM.ActiveConnection = MyConnection
   CM.CommandType = adCmdText
   CM.CommandText = "select * from <table>"
   Set RS = New ADODB.Recordset
   RS.Open CM, , adOpenStatic, adLockBatchOptimistic

   'another way using just the connection
   Set RS = MyConnection.Execute("select * from <table>")

   'return the data
   getEmployee = RS.Fields(0).Value
End Function

Public Function ConnectSQL() As ADODB.Connection
   Set ConnectSQL = New ADODB.Connection
   ConnectSQL.Open "Driver={MySQL ODBC Client Interface};ServerName=localhost;dbq=@testdb"
End Function

【讨论】:

  • 布莱恩,这行得通!我现在可以连接到数据库了。这是我认为问题发生的地方。我有一个带有 ConnectSQL 功能的模块。当我尝试使用该功能时,我无法连接。如果我将该功能移到与您拥有的相同的类中,那么我可以很好地连接。我是否需要先将该模块包含到此类中才能使用它?
  • 如果你移动了并且没有修改函数,我不知道为什么会这样。
  • 目前你调用ConnectSQL的方法在我的项目中,一个叫MySQL的模块。我想做的是在我的 Employee 类中调用该函数,这样我就可以查询我需要的数据。这可能吗,还是我应该将连接信息放在类中,然后删除模块?
  • Brian,我一定对模块功能做了什么,因为我现在可以让它工作了。非常感谢您的帮助!
  • 很高兴听到!假设您有一个带有类的 exe 和模块中的公共函数,那么该函数应该在任何地方都可用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多