我如何获得连接?

时间:2015-11-12 02:45:45

标签: c++ visual-c++ odbc

ALL,

我试图通过ODBC调用数据库获得连接。 DSN已配置,我可以毫无问题地运行数据库引擎。但是尝试通过SQLConnect()调用从我的程序连接失败。

我强烈怀疑这是因为我没有将dsn从std :: string正确转换为SQLCHAR *。这是我正在使用的代码:

std::string selectedDSN;
SQLCHAR *dsn;
dsn = new unsigned char[selectedDSN.length() + 1];
strcpy( (char *) dsn, selectedDSN );
ret = SQLConnect( hdbc, (SQLCHAR *) dsn, SQL_NTS, (SQLCHAR*) NULL, 0, NULL, 0 );
if( ret != SQL_SUCCESS || ret != SQL_SUCCESS_WITH_INFO )
{
    ret = SQLGetDiagRec( SQL_HANDLE_ENV, env, 1, sqlstate, &native_error, msg, sizeof( msg ), &msglen );
    std::wstring temp( msg );
    std::string t( temp.begin(), temp.end() );
    errorMsg = t;
    result = 1;
}

我在这里的转换来自this链接。以下调用

但是“ret”变量设置为-1,以下对SQLGetDiagRec()的调用返回100(SQL_SUCCESS_WITH_INFO。

1 个答案:

答案 0 :(得分:0)

问题在于:

if( ret != SQL_SUCCESS || ret != SQL_SUCCESS_WITH_INFO )

此表达式始终为true。改为:

if( ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO )
                       ^^