2017-09-04 9 views
0

以下のコードを使用してC++でSQL Serverに接続しようとしていますが、 "[Microsoft] [ODBC Driver Manager]ソース名が見つからず、デフォルトのドライバが[Microsoft] [ODBC Driver Manager]データソース名が見つかりません。デフォルトドライバが指定されていません

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も追加しました。

これらすべての設定で同じエラーが発生します。

何かが見つからない場合、または接続文字列を変更する必要がある場合や、C++でSQL Serverに接続する方法が他にある場合は、教えてください。

答えて

0

接続文字列引数に_Tが追加されました。

(SQLWCHAR*)_T("DRIVER={SQL Server};SERVER=(IPADDRESS\\SQLEXPRESS); 
DATABASE=test; UID=sa;PWD=abcd$1234;") 
関連する問題

 関連する問題