【发布时间】:2014-01-22 15:08:49
【问题描述】:
我正在为 ODBC 创建经典的 ADO 连接池,如本知识库文章中所述
http://support.microsoft.com/kb/237844
但是,在执行 SQLSetEnvAttr 函数时,我收到一个大数字作为返回值。确切地说是147082878。
这个数字是什么意思?根据知识库文章,除 0 以外的任何数字都是错误的,但这个非常大的数字不对应于任何 ODBC 错误常量。
谢谢。
编辑:包含代码:
Dim rc As Long
Const SQL_ATTR_CONNECTION_POOLING = 201
Const SQL_CP_ONE_PER_DRIVER = 1
Const SQL_IS_INTEGER = -6
Const SQL_CP_OFF = 0
#If Win32 Then
Private Declare Function SQLSetEnvAttr Lib "odbc32.dll" (ByVal EnvironmentHandle As Long, _
ByVal EnvAttribute As Long, _
ByVal ValuePtr As Long, _
ByVal StringLength As Long) As Integer
#End If
''' <summary>
'''
''' Call connection pool for new connections (ODBC)
'''
''' </summary>
''' <remarks></remarks>
Private Sub ConnectionPool()
Try
rc = SQLSetEnvAttr(0&, _
SQL_ATTR_CONNECTION_POOLING, _
SQL_CP_ONE_PER_DRIVER, _
SQL_IS_INTEGER)
If rc <> 0 Then
#If DEBUG Then
System.Diagnostics.Debugger.Break()
#End If
End If
Catch ex As Exception
#If DEBUG Then
System.Diagnostics.Debugger.Break()
#End If
End Try
End Sub
【问题讨论】:
-
您标记了 VB.Net 和 VB6。您实际使用的是哪种语言? (编辑您的问题以删除无效标记。)另外,您是否有不能使用 OLE DB 驱动程序的原因?最后,您应该编辑您的帖子以包含重现错误的代码。
-
您好,抱歉,这是一个通过自动转换工具移植到 VB.net 的 VB6 应用程序,所以它包含大量遗留代码。该代码是针对 {Microsoft ODBC for Oracle} 驱动程序开发的,在大量连接后尝试 Oracle 客户端驱动程序时出现“尝试访问受保护或只读内存”错误,因此我们恢复到旧版驱动程序,直到我们可以在 ADO.NET 或 ODP.NET 中重新开发。我将添加代码来演示。