首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >经典ADO SQLSetEnvAttr返回代码

经典ADO SQLSetEnvAttr返回代码
EN

Stack Overflow用户
提问于 2014-01-22 23:08:49
回答 1查看 372关注 0票数 1

我正在为ODBC创建经典的ADO连接池,如这篇知识库文章所述

http://support.microsoft.com/kb/237844

但是,在执行SQLSetEnvAttr函数时,我收到一个很大的数字作为返回值。准确地说是147082878。

这个数字是什么意思?根据知识库文章,任何非0的数字都是错误的,但是这个非常大的数字并不对应于任何ODBC错误常量。

谢谢。

编辑:包含的代码:

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2014-01-23 14:48:47

免责声明:到目前为止,我只从C API (而不是ADO)使用ODBC。

通常,所有SQL... ODBC函数都会传递一个句柄作为第一个参数,但是在连接池的情况下,会传递给SQLSetEnvAttr一个NULL句柄。(在按照kb文章中的说明分配环境句柄之前,这样做很重要。)

如果返回值指示失败,您可以运行SQLGetDiagRec (或SQLGetDiagField)获取错误详细信息。

我不知道SQLGetDiag...函数是否可以在NULL句柄上工作,但这是我首先要尝试的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21286609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档