すべてのプロダクト
Search
ドキュメントセンター

PolarDB:ODBC

最終更新日:Aug 27, 2026

PolarDB for PostgreSQL (Compatible with Oracle) は、UNIX と Windows の両方のシステム向けに ODBC ドライバーを提供しています。このトピックでは、これらのドライバーを使用してクラスターに接続する方法について説明します。

前提条件

  • PolarDB クラスターにデータベースアカウントが作成されていること。詳細については、「データベースアカウントの作成」をご参照ください。

  • PolarDB クラスターへのアクセスに使用するホストの IP アドレスがホワイトリストに追加されていること。詳細については、「クラスターホワイトリストの設定」をご参照ください。

  • ご使用の Windows システムが、Service Pack 1 がインストールされた Windows 7 以降であること。

  • ご使用の UNIX または Linux システムに、以下のツールがインストールされていること:

    • Libtool 1.5.10 以降。

    • unixODBC-devel。

    • PolarDB-Tools。ダウンロードとインストールの手順については、「PolarDB-Tools」をご参照ください。

ドライバーのダウンロード

Windows への ODBC のインストール

  1. お使いの Windows のアーキテクチャに対応するインストールパッケージをダウンロードします。ダウンロードリンクについては、「ドライバーのダウンロード」をご参照ください。

  2. ダウンロード完了後、ODBC パッケージを解凍します。

  3. 管理者として install.bat ファイルを実行します。インストールが完了したら、任意のキーを押して終了します。

  4. (オプション) ODBC パッケージをアンインストールするには、uninstall.bat ファイルを実行してください。

Windows での PolarDB への接続

  1. [コントロール パネル] で、管理ツール を開きます。

  2. 管理ツール ページで、[ODBC データ ソース] を見つけて開きます。

  3. [ODBC データ ソース アドミニストレーター] ダイアログボックスで、追加する をクリックします。

  4. [POLARDB (UNICODE)] を選択し、完了 をクリックします。

  5. ダイアログボックスに、次の情報を入力します。

    Parameter

    説明

    Data Source

    データ ソースの名前。

    Description

    データ ソースの説明。

    Database

    接続先データベースの名前。

    SSL Mode

    SSL 暗号化方式を選択します。

    Server

    接続先データベースのエンドポイント。PolarDB クラスターのエンドポイントを表示するには、「エンドポイントの表示または申請」をご参照ください。

    Port

    接続先データベースのポート。デフォルト値は 1521 です。

    Username

    データベースアカウントのユーザー名。

    Password

    データベースアカウントのパスワード。

  6. [保存] をクリックします。

UNIX または Linux への ODBC のインストール

  1. 次のコマンドを実行して、LD_LIBRARY_PATH 環境変数を設定します:

    export LD_LIBRARY_PATH=<PolarDB-ODBC/lib/path>
  2. 次のコマンドを実行して、ODBCINI 環境変数を設定します:

    export ODBCINI=<your odbc.init file path>
  3. お使いのオペレーティングシステムのアーキテクチャとバージョンに対応する ODBC ドライバーをダウンロードします。ダウンロードリンクについては、「ドライバーのダウンロード」をご参照ください。

  4. ODBC ドライバーをインストールします。

    説明

    PolarDB ODBC ドライバーパッケージはポータブルです。解凍後すぐに使用できます。

    tar -zxvf <ダウンロードしたドライバーパッケージ名>

    ディレクトリ構造は次のとおりです:

    ├── include
    ├── lib
    └── samples
    3 directories

UNIX または Linux での PolarDB への接続

  1. Linux サーバーに Libtool をインストールします。Libtool のバージョンは 1.5.10 以降である必要があります。

    yum install -y libtool
  2. Linux サーバーに unixODBC-devel をインストールします。

    yum install -y unixODBC-devel
  3. odbc.ini ファイルを編集します。

    vim $ODBCINI 
  4. odbc.ini ファイルに次の情報を追加します。

    [POLARDB]
    Description = ODBC for POLARDB
    Driver      = /home/user/target/lib/unix/polardb-odbc.so
    Driver64    = /home/user/target/lib/unix/polardb-odbc.so
    Database    = <Your database name>
    Servername  = <Your database endpoint>
    Password    = <Your password>
    Port        = <Your port>
    Username    = <Your username>
    Trace       = yes
    TraceFile   = /tmp/odbc.log
    FileUsage   = 1
    説明
    • PolarDB クラスターのエンドポイントを表示するには、「エンドポイントの表示または申請」をご参照ください。

    • この例では、/home/usertarget フォルダーを含む実際のパスに置き換えてください。

  5. PolarDB に接続します。

    $isql -v POLARDB
    +---------------------------------------+
    | Connected!                            |
    |                                       |
    | sql-statement                         |
    | help [tablename]                      |
    | quit                                  |
    |                                       |
    +---------------------------------------+
    SQL>

UNIX または Linux の例

このセクションでは、Test1 および Test2 テストファイルの実行方法について説明します。

この例を実行する前に、PolarDB データベースに次のテーブルを作成し、データを入力してください:

create table emp(empno number(4),
ename varchar2(10),
job varchar2(9),
mgr number (4),
hiredate date,
sal number(7,2),
comm number(7,2),
deptno number(2));
insert into emp values(7369,'smith','clerk',7902 ,to_date('17-12-1980','dd-mm-yyyy'),800,null, 20 );
insert into emp values(7499,'allen','salesman',7698 ,to_date('20-2-1981','dd-mm-yyyy'),1600, 300 , 30 );
insert into emp values(7521,'ward' ,'salesman' ,7698 ,to_date(' 22-2-1981' , 'dd-mm-yyyy' ), 1250 , 500 , 30 );
insert into emp values(7566,'jones','manager' , 7839 ,to_date(' 2-4-1981' , 'dd-mm-yyyy' ), 2975 , null , 20 );
insert into emp values(7654,'martin','salesman',7698 ,to_date(' 28-9-1981' , 'dd-mm-yyyy' ), 1250 , 1400 , 30 );
insert into emp values(7698,'blake','manager', 7839 ,to_date(' 1-5-1981' , 'dd-mm-yyyy' ), 2850 , null , 30 );
insert into emp values(7782,'clark','manager', 7839 ,to_date(' 9-6-1981' , 'dd-mm-yyyy' ), 2450 , null , 10 );
insert into emp values(7788,'scott','analyst', 7566 ,to_date(' 13-7-1987' , 'dd-mm-rr ' ) - 85 , 3000 , null , 20 );
insert into emp values(7839,'king', 'president ' , null ,to_date('17-11-1981 ' , 'dd-mm-yyyy' ), 5000 , null , 10 );
insert into emp values(7844,'turner','salesman ' , 7698 ,to_date('8-9-1981 ' , 'dd-mm-yyyy' ), 1500 , 0 , 30 );
insert into emp values(7876,'adams', 'clerk' , 7788 ,to_date('13-7-1987' , 'dd-mm-rr ' ) - 51 , 1100 , null , 20 );
insert into emp values(7900,'james', 'clerk' , 7698 ,to_date('3-12-1981' , 'dd-mm-yyyy' ), 950 , null , 30 );
insert into emp values(7902,'ford', 'analyst' , 7566 ,to_date('3-12-1981' , 'dd-mm-yyyy' ), 3000 , null , 20 );
insert into emp values(7934,'miller','clerk ' , 7782 ,to_date('23-1-1982' , 'dd-mm-yyyy' ), 1300 , null , 10 );
  1. 次のコマンドを実行して、ODBC ドライバーパッケージを解凍します。

    tar -zxvf <ダウンロードしたドライバーパッケージ名>
  2. 次のコマンドを実行して、polardb-odbc フォルダーを開きます。

    cd polardb-odbc
  3. ODBC ドライバーフォルダー内の samples フォルダーを開きます。

    cd samples
  4. テストサンプルをコンパイルします。コンパイルが完了すると、Test1Test2 という 2 つのテストファイルが生成されます。

    make
  5. Test1Test2 を実行します。

    ./Test1
    ## Test1 を実行
    ./Test2
    ## Test2 を実行
    説明
    • Test1 は、作成、読み取り、更新、削除 (CRUD) 操作の例です。Test2 は、カーソルと出力パラメーターの使用方法の例です。

    • 次のコードスニペットは、あくまで説明用です。完全なコードについては、ドライバーパッケージの samples フォルダーにある Test1 および Test2 ファイルをご参照ください。

次のコードは Test1 の例です:

... 
int main(int argc, char* argv[])
{
    /* 初期化 */
    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);
    /* CRUD 操作 */
    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");
    /* 接続を閉じる */
    Disconnect(&hEnv,&hDBC,&hStmt);
    /* クリーンアップ */
    free(hEnv);
    free(hDBC);
    free(hStmt);
    return 0;
}

次のコードは Test2 の例です:

int main(int argc, char* argv[])
{
    /* 定義 */
    RETCODE rCode;
    SQLUSMALLINT a;
    SQLINTEGER Num1IndOrLen;
    SQLSMALLINT iTotCols = 0;
    int j;
    SDWORD cbData;
    /* 初期化 */
    HENV *hEnv = (HENV*)malloc(sizeof(HENV));
    HDBC *hDBC = (HDBC*)malloc(sizeof(HDBC));
    HSTMT *hStmt = (HSTMT*)malloc(sizeof(HSTMT));
    HSTMT *hStmt1 = (HSTMT*)malloc(sizeof(HSTMT));
    /* 接続の確立 */
    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);
    /* 開始 */
    ExecuteSimple_Select(&hStmt1,(UCHAR*) "BEGIN;");
    /* 準備 */
    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;
    /* 実行 */
    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")   ;