0
아래 코드를 사용하여 C++에서 SQL Server에 연결하려고하지만 동일한 오류 "[Microsoft] [ODBC 드라이버 관리자] 데이터가 나타납니다. 소스 이름을 찾을 수 없습니다 및 기본 드라이버는[Microsoft] [ODBC 드라이버 관리자] 데이터 원본 이름을 찾을 수없고 기본 드라이버가 지정되지 않았습니다.
SQLHANDLE sqlenvhandle;
SQLHANDLE sqlconnectionhandle;
SQLHANDLE sqlstatementhandle;
SQLRETURN retcode;
do
{
if(SQL_SUCCESS!=SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &sqlenvhandle))
break;
if(SQL_SUCCESS!=SQLSetEnvAttr(sqlenvhandle,SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0))
break;
if(SQL_SUCCESS!=SQLAllocHandle(SQL_HANDLE_DBC, sqlenvhandle, &sqlconnectionhandle))
break;
SQLWCHAR retconstring[1024];
switch(SQLDriverConnect (sqlconnectionhandle, NULL,
(SQLWCHAR*)"DRIVER={SQL Server};SERVER=(IPADDRESS\\SQLEXPRESS);DATABASE=test;UID=sa;PWD=abcd$1234;",
SQL_NTS, retconstring, 1024, NULL,SQL_DRIVER_NOPROMPT))
{
case SQL_SUCCESS_WITH_INFO:
//show_error(SQL_HANDLE_DBC, sqlconnectionhandle);
retcode = 0;
break;
case SQL_INVALID_HANDLE:
case SQL_ERROR:
//show_error(SQL_HANDLE_DBC, sqlconnectionhandle);
SQLWCHAR sqlstate[1024];
SQLWCHAR message[1024];
if(SQL_SUCCESS == SQLGetDiagRec(SQL_HANDLE_DBC, sqlconnectionhandle, 1, sqlstate, NULL, message, 1024, NULL))
{
retcode = -1;
break;
}
default:
break;
}
if(retcode == -1)
break;
if(SQL_SUCCESS!=SQLAllocHandle(SQL_HANDLE_STMT, sqlconnectionhandle, &sqlstatementhandle))
break;
if(SQL_SUCCESS!=SQLExecDirect(sqlstatementhandle, (SQLWCHAR*)"select * from testtable", SQL_NTS))
{
//show_error(SQL_HANDLE_STMT, sqlstatementhandle);
break;
}
else
{
char name[64];
char address[64];
int id;
while(SQLFetch(sqlstatementhandle)==SQL_SUCCESS)
{
SQLGetData(sqlstatementhandle, 1, SQL_C_ULONG, &id, 0, NULL);
SQLGetData(sqlstatementhandle, 2, SQL_C_CHAR, name, 64, NULL);
SQLGetData(sqlstatementhandle, 3, SQL_C_CHAR, address, 64, NULL);
}
}
}
while(FALSE);
SQLFreeHandle(SQL_HANDLE_STMT, sqlstatementhandle);
SQLDisconnect(sqlconnectionhandle);
SQLFreeHandle(SQL_HANDLE_DBC, sqlconnectionhandle);
SQLFreeHandle(SQL_HANDLE_ENV, sqlenvhandle);
현재 구성은 다음과 같습니다 "지정되지 :
- SQL 서비스가 실행됩니다.
- TCP/IP도 사용 가능합니다.
- 시스템 DNS 이름이 ODBC에서 "SQL Server"로 설정됩니다.
- ODBC 원본 관리자 대상은 "% windir % \ System32 \ odbcad32.exe"입니다.
- 연결 문자열을 IP 주소로 바꾸고 포트 1433을 추가하려고했습니다.
그러나 이러한 모든 설정에 대해 동일한 오류가 발생합니다.
내가 누락되었거나 연결 문자열을 변경해야하거나 SQL Server를 C++로 연결하는 다른 방법이 있다면 알려주십시오.