Windows 2008 + SQL 208的SQL连接问题

时间:2015-01-14 09:55:35

标签: c++ sql-server visual-c++

我一直致力于一个应用程序(在VC ++上开发)。 通过使用此应用程序,我必须通过ODBC连接到SQL。我们有自己的数据源,用户名和密码。

此应用程序运行良好(我的意思是SQL连接)可以使用Windows 2003 + SQL 2008操作系统。 但这与Windows 2008 + SQL 2008不一样。

我怀疑很少有SQL API / ODBC API被更改。

以下是示例代码。你能告诉我Windows 2008 + SQL 2008环境中出了什么问题。

=============================================== ==============

BOOL ODBWithTimeout(char *DbSource, char *UserName, char *Password, char *DbName, int sec)
{
RETCODE rc;
HSTMT hstmt;
char        szBuffer[MAX_QUERY_LENGTH];
SQLHANDLE EnvHandle;

        rc = SQLAllocEnv(&henv);

        if (rc==SQL_ERROR)
        {

           return FALSE;
        }
        rc = SQLAllocConnect(henv, &hdbc);

        if (rc==SQL_SUCCESS || rc == SQL_SUCCESS_WITH_INFO);
        else 
        {
            SQLFreeEnv(henv);
//          return DbErrorHandler(NULL,"SQLSetConnectOption");  
            return FALSE;
        }
        rc=SQLSetConnectOption(hdbc,SQL_LOGIN_TIMEOUT,sec);
        if (rc==SQL_SUCCESS || rc == SQL_SUCCESS_WITH_INFO)
        ;
        else 
        {
            SQLFreeConnect(hdbc);
            SQLFreeEnv(henv);
//          return DbErrorHandler(NULL,"SQLSetConnectOption");  

            return FALSE;
        }
        rc=SQLSetConnectOption(hdbc,SQL_AUTOCOMMIT,SQL_AUTOCOMMIT_OFF);
        if (rc==SQL_SUCCESS || rc == SQL_SUCCESS_WITH_INFO)
        ;
        else
        {
            SQLFreeConnect(hdbc);
            SQLFreeEnv(henv);
//          return DbErrorHandler(NULL,"SQLSetConnectOption");  

            return FALSE;
        }
        rc=SQLSetConnectOption(hdbc, SQL_PACKET_SIZE, 10240);
        rc=SQLConnect(hdbc,DbSource,SQL_NTS,UserName,SQL_NTS,Password,SQL_NTS);     

        if (rc==SQL_SUCCESS || rc == SQL_SUCCESS_WITH_INFO)
        {

                   rc = SQLAllocStmt(hdbc, &hstmt);
                   if ((rc == SQL_SUCCESS) || (rc == SQL_SUCCESS_WITH_INFO))
                   {
                        strcpy(szBuffer, "SET ANSI_NULL_DFLT_ON OFF");
                        rc = SQLExecDirect(hstmt, (UCHAR*)szBuffer, SQL_NTS);
                        SQLFreeStmt(hstmt, SQL_DROP);
                    }

        //turn off SET QUOTED_IDENTIFIER OFF
        //
                    rc = SQLAllocStmt(hdbc, &hstmt);
                    if ((rc == SQL_SUCCESS) || (rc == SQL_SUCCESS_WITH_INFO))
                    {
                        strcpy(szBuffer, "SET QUOTED_IDENTIFIER OFF");
                        rc = SQLExecDirect(hstmt, (UCHAR*)szBuffer, SQL_NTS);
                        SQLFreeStmt(hstmt, SQL_DROP);
                    }


                    SQLAllocStmt(hdbc,&hstmt);
                    wsprintf(usedb,"use %s",DbName);
                    rc=SQLExecDirect(hstmt,usedb,SQL_NTS);
                    if (rc==SQL_SUCCESS || rc == SQL_SUCCESS_WITH_INFO)
                    {
                        rc=SQLTransact(henv,hdbc,SQL_COMMIT);                            
                    }
//                  else return DbErrorHandler(hstmt,"OpenDatabase");   
                    else 
                    {

                        return FALSE;
                    }

        } 
        else 
        {
            SQLFreeConnect(hdbc);
            SQLFreeEnv(henv);
//          return DbErrorHandler(NULL,"OpenDatabase"); 

            return FALSE;
        }


return TRUE;    


}

=============================================== ==============

感谢您的帮助。

谢谢, JAG

==================== 我的应用程序无法在此特定环境中与SQL建立连接:Windows 2008 + SQL 2008

0 个答案:

没有答案