2017-02-23 9 views
0

接続文字列は次のとおりです。コードでODBCを介してTeradataに接続するにはどうすればよいですか?

Provider = Teradata; DBCName = dbc_name; Database = database_name; Uid =ユーザー名; Pwd =パスワード;

Teradata ODBCクライアントバージョン15.1をインストールし、コントロールパネルから接続をセットアップしました。 SQLDriverConnectのコマンドは常に返し

#include "stdafx.h" 
#include <Windows.h> 
#include <sql.h> 
#include <sqlext.h> 
#include <string> 

int _tmain(int argc, _TCHAR* argv[]) 
{ 
    SQLHANDLE hdbc = SQL_NULL_HANDLE; 
    SQLHANDLE henv = SQL_NULL_HANDLE; 
    SQLRETURN retval = SQL_SUCCESS; 

    retval = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv); 
    if (retval != SQL_SUCCESS) { 
     printf("SQLAllocHandle SQL_HANDLE_ENV failed! Result = %d\n", retval); 
    } 

    retval = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0); 
    if (retval != SQL_SUCCESS) { 
     printf("SQLSetEnvAttr SQL_ATTR_ODBC_VERSION failed! Result = %d\n", retval); 
    } 

    SQLINTEGER output_nts, autocommit; 
    retval = SQLGetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, &output_nts, 0, 0); 

    retval = SQLSetEnvAttr(henv, SQL_ATTR_OUTPUT_NTS, (SQLPOINTER)SQL_TRUE, 0); 
    if (retval != SQL_SUCCESS) { 
     printf("SQLSetEnvAttr SQL_ATTR_OUTPUT_NTS failed! Result = %d\n", retval); 
    } 

    retval = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc); 
    if (retval != SQL_SUCCESS) { 
     printf("SQLAllocHandle SQL_HANDLE_DBC failed! Result = %d\n", retval); 
    } 

    SQLCHAR szConn[1024]; 
    SWORD cbConn = 0; 

    std::string connectionString("Provider=teradata;DBCName=myLocalTDcop;database=myDatabaseName;uid=myUID;pwd=myPwd;"); 

    retval = SQLDriverConnect(hdbc, NULL, (SQLCHAR*)connectionString.c_str(), SQL_NTS, szConn, 1024, &cbConn, SQL_DRIVER_NOPROMPT); 
    if (retval != SQL_SUCCESS) { 
     printf("SQLDriverConnect failed! Result = %d\n", retval); 
    } 
} 

-1:

ときは、コードを使用しています。

接続文字列に問題がありますか?

アップデート: 私は、エラーメッセージを取得しているSQLGetDiagRecの使用:

ドライバが無効返された(または返すために失敗した)SQL_DRIVER_ODBC_VER:03.80

しかし、私はその後、SQL_OV_ODBC3_80にODBCのバージョンを変更した場合

[Microsoft] [ODBC Driver Manager]ドライバは、アプリケーションが要求したバージョンのODBC動作をサポートしていません(SQLSetEnvAttrを参照)。

、その後:

は、ドライバが無効返された(または返すために失敗した)SQL_DRIVER_ODBC_VER:03.80

は15.10のODBCバージョンを行うには、このですか?私はドキュメントを見てきましたが、ODBCのバージョンがどこに指定されているか分かりません。 Windowsでチェックする方法はありますか?

+0

ユーザIDが「myUID」でパスワードが「myPwd」であるとは思われません。あなたは正しい値を供給していますか?また、 'SQLGetDiagRec'を使って有益なエラーメッセージを得ることができます。 –

+0

私はユーザー名とパスワードを変更しました(おそらくパブリックフォーラムに投稿することはできません)。このサンプルコードを実行している人は、ODBCセットアップに関係するものに変更する必要があります。 – Stefan

+0

しかし、SQLGetDiagRecに関するヒントをありがとう! – Stefan

答えて

0

Path環境変数に正しいディレクトリを追加していませんでした。

関連する問題