本ページでは、POLARDB オープンデータベース接続 (ODBC) ドライバーを使用して、Unix または Linux アプリケーションを ApsaraDB for POLARDB クラスターに接続する方法について説明します。
始める前に
- ApsaraDB for POLARDB クラスターのアカウントが作成されている必要があります。 アカウントの作成方法の詳細については、「データベースアカウントの作成」をご参照ください。
- ApsaraDB for POLARDB クラスターに接続するホストの IP アドレスをホワイトリストに追加されている必要があります。 詳細については、「POLARDB クラスターのホワイトリストの設定」をご参照ください。
- POLARDB ODBC ドライバーがインストールされているサーバーは、64 ビット Linux を実行している必要があります。
POLARDB ODBC ドライバーのダウンロード
POLARDB ODBC ドライバーのインストール
ApsaraDB for POLARDB は、ODBC ドライバーパッケージを提供しています。 インストールせずに解凍して使用することができます。 次のコマンドを実行して、パッケージを解凍します。
tar -zxvf polardb-odbc.tar.gz
ApsaraDB for POLARDB クラスターへの接続
例
次の例は、Test1
および Test2
ファイルを実行する方法を示しています。
Test1 のサンプルコード:
...
int main(int argc, char* argv[])
{
/*Initialization*/
RETCODE rCode;
HENV *hEnv = (HENV*)malloc(sizeof(HENV));
HDBC *hDBC = (HDBC*)malloc(sizeof(HDBC));
HSTMT *hStmt = (HSTMT*)malloc(sizeof(HSTMT));
Connect("POLARDB","user","",&hEnv,&hDBC);
rCode = SQLAllocStmt(*hDBC,hStmt);
rCode = SQLAllocHandle(SQL_HANDLE_STMT,*hDBC,hStmt);
/*Add, delete, modify, and query operations*/
ExecuteInsertStatement(&hStmt,(UCHAR*) "INSERT INTO EMP(EMPNO,ENAME) VALUES((SELECT COUNT(EMPNO) FROM EMP),'JACKSON')");
ExecuteUpdate(&hStmt,(UCHAR*) "UPDATE EMP SET ENAME='ODBC Test' WHERE EMPNO < 100");
ExecuteDeletStatement(&hStmt,(UCHAR*) "DELETE FROM EMP WHERE EMPNO<100");
ExecuteSimple_Select(&hStmt,(UCHAR*) "SELECT EMPNO,ENAME,JOB,MGR,HIREDATE FROM EMP where empno = 7369");
/*Disconnection*/
Disconnect(&hEnv,&hDBC,&hStmt);
/*clean up*/
free(hEnv);
free(hDBC);
free(hStmt);
return 0;
}
Test2 のサンプルコード:
int main(int argc, char* argv[])
{
/*Definition*/
RETCODE rCode;
SQLUSMALLINT a;
SQLINTEGER Num1IndOrLen;
SQLSMALLINT iTotCols = 0;
int j;
SDWORD cbData;
/*Initialization*/
HENV *hEnv = (HENV*)malloc(sizeof(HENV));
HDBC *hDBC = (HDBC*)malloc(sizeof(HDBC));
HSTMT *hStmt = (HSTMT*)malloc(sizeof(HSTMT));
HSTMT *hStmt1 = (HSTMT*)malloc(sizeof(HSTMT));
/**Connection establishment**/
Connect("POLARDB","user","***",&hEnv,&hDBC);
rCode = SQLAllocStmt(*hDBC,hStmt);
rCode = SQLAllocStmt(*hDBC,hStmt1);
rCode = SQLAllocHandle(SQL_HANDLE_STMT,*hDBC,hStmt);
rCode = SQLAllocHandle(SQL_HANDLE_STMT,*hDBC,hStmt1);
/*begin*/
ExecuteSimple_Select(&hStmt1,(UCHAR*) "BEGIN;");
/*prepare*/
RETCODE rc = SQLPrepare((*hStmt),(SQLCHAR*)"{ call refcur_inout_callee2(?,?)}",SQL_NTS);
rc = SQLBindParameter((*hStmt),1, SQL_PARAM_INPUT_OUTPUT, SQL_C_CHAR,SQL_REFCURSOR,0, 31,
strName, 31, &Num1IndOrLen);
rc = SQLBindParameter((*hStmt),2, SQL_PARAM_INPUT_OUTPUT, SQL_C_CHAR,SQL_REFCURSOR,0, 31,
&strName1, 31, &Num1IndOrLen);
Num1IndOrLen=0;
/*execute*/
rc = SQLExecute((*hStmt));
if(rc == SQL_SUCCESS || rc == SQL_SUCCESS_WITH_INFO)
{
printf("\nstrName _________ = %s\n",strName);
printf("\nstrName 1_________ = %s\n",strName1);
}
printf("\n First Cursor as OUT Parameter \n") ;