【发布时间】:2015-11-12 02:45:44
【问题描述】:
所有,
我正在尝试通过 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。
【问题讨论】:
标签: c++ visual-c++ odbc