相关环境
IDE:Microsoft Visual Studio Ultimate 2013 版本12.0.40629.00 Update 5
系统:WIN10 32
相关代码
#include<stdio.h>
#include<windows.h>
#include<sql.h>
#include<sqlext.h>
#include<sqltypes.h>
#include<sqlucode.h>
#include<string>
#include<iostream>
using namespace std;
int main()
{
SQLRETURN ret;
SQLHENV henv;//环境句柄
SQLHDBC hdbc;//连接句柄
SQLHSTMT hstmt;//语句句柄
ret = SQLAllocHandle(SQL_HANDLE_ENV, NULL, &henv);//申请环境句柄
ret = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3_80, SQL_IS_INTEGER);//设置环境属性
ret = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);//申请数据库连接句柄
ret = SQLConnect(hdbc, (SQLWCHAR*)"myTest", SQL_NTS, (SQLWCHAR*)"sa", SQL_NTS, (SQLWCHAR*)"1234", SQL_NTS);//连接数据库
if (ret != SQL_SUCCESS){
SQLINTEGER NumRecords = 0;
SQLGetDiagField( SQL_HANDLE_DBC,
hdbc,
0,
SQL_DIAG_NUMBER,
&NumRecords,
SQL_IS_INTEGER,
NULL );
printf("Total Number of diagnostic records: %d\n", NumRecords);
SQLSMALLINT Counter = 0;
SQLINTEGER NativeErr = 0;
SQLWCHAR SQLState[6];
SQLWCHAR ErrMsg[255];
SQLSMALLINT ErrMsgLen = 0;
for (Counter = 1; Counter <= NumRecords; Counter++)
{
SQLGetDiagRec( SQL_HANDLE_DBC,
hdbc,
Counter,
SQLState,
&NativeErr,
ErrMsg,
sizeof(ErrMsg),
&ErrMsgLen );
printf("SQLSTATE : %s\n", SQLState);
printf("%s\n", ErrMsg);
}
}
return 0;
}
故意的错误在 SQLconnect的数据源
SQLConnect(hdbc, (SQLWCHAR*)"myTest"——> myTest是一个没有在ODBC注册的数据源
代码执行的结果
按照API文档的解释,这里应该会出现类似 “数据源不存在” 的错误提示,请问为什么我的代码却没有??
相似问题