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

PolarDB:ODBC

最終更新日:Mar 29, 2026

オープンデータベースコネクティビティ (ODBC) ドライバーを使用して、Windows または UNIX/Linux アプリケーションを PolarDB for PostgreSQL (Compatible with Oracle) クラスターに接続します。

前提条件

開始する前に、以下の条件を満たしていることを確認してください。

  • PolarDB クラスター内のデータベースアカウントです。作成方法については、データベースアカウントの作成をご参照ください。

  • クラスターのホワイトリストに追加したホストの IP アドレス。 ホワイトリストを設定するには、「クラスターのホワイトリストを設定する」をご参照ください。

  • Windows のみ: Windows 7 以降(Service Pack 1 がインストール済み)。

  • UNIX/Linux のみ: 次のツールがインストール済みであること。

    • Libtool 1.5.10 以降

    • unixODBC-devel

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

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

ご利用の OS および CPU アーキテクチャに合致するパッケージをダウンロードします。

プラットフォームアーキテクチャダウンロード
UNIX/Linux32 ビット x86PolarDB-ODBC_Linux_X86_32.tar.gz
UNIX/Linux64 ビット x86PolarDB-ODBC_Linux_X86_64.tar.gz
UNIX/Linux64 ビット ARMPolarDB-ODBC_Linux_arm_64.tar.gz
Windows64 ビット x86PolarDB-ODBC_Windows_x86_64.7z
Windows32 ビット x86PolarDB-ODBC_Windows_x86_32.7z

Windows でのインストールと接続

ODBC ドライバーのインストール

  1. ご利用の Windows アーキテクチャに対応するドライバーパッケージをダウンロードします。「ドライバーのダウンロード」をご参照ください。

  2. パッケージを展開します。

  3. 管理者権限で install.bat を実行し、任意のキーを押して終了します。

    Install the ODBC driver in Windows

  4. (任意)ドライバーをアンインストールする場合は、uninstall.bat を実行します。

Windows から PolarDB への接続

  1. コントロールパネル を開き、管理ツール に移動します。

  2. ODBC データソース を開きます。

  3. ODBC データソース管理者 ダイアログボックスで、追加 をクリックします。

  4. ドライバーとして PolarDB (UNICODE) を選択し、完了 をクリックします。

  5. データソースのパラメーターを設定します。

    パラメーターodbc.ini キーワードデフォルト値説明
    データソースデータソースの名前
    説明データソースの説明
    データベースDatabasePolarDB クラスターの名前
    SSL モードSSL 暗号化を有効にするかどうか
    サーバーServernameデータベースのエンドポイント。エンドポイントの確認方法については、「エンドポイントの表示または申請」をご参照ください。
    ProtPort1521データベースへの接続に使用されるポート
    ユーザー名Usernameデータベースアカウントのユーザー名
    パスワードPasswordデータベースアカウントのパスワード
  6. 保存 をクリックします。

UNIX/Linux でのインストールと接続

ODBC ドライバーのインストール

  1. ご利用の Linux アーキテクチャに対応するドライバーパッケージをダウンロードします。「ドライバーのダウンロード」をご参照ください。

  2. パッケージを展開します。

    tar -zxvf polardb-odbc.tar.gz

    展開されたディレクトリには、次の 3 つのサブディレクトリが含まれます。

    ├── include
    ├── lib
    └── samples
    3 directories
  3. ドライバーの lib ディレクトリを指すように、LD_LIBRARY_PATH 環境変数を設定します。

    export LD_LIBRARY_PATH=<PolarDB-ODBC/lib/path>
  4. ODBCINI 環境変数を、ご利用の odbc.ini ファイルを指すように設定します。

    export ODBCINI=<your odbc.ini file path>

データソースの設定

  1. ご利用の odbc.ini ファイルを編集します。

    vim $ODBCINI
  2. 次のデータソース定義を追加します。プレースホルダーの値は、実際の接続情報を使用して置き換えてください。

    説明
    • /home/user を、target フォルダの実際のパスに置き換えます。

    • クラスターエンドポイントの確認方法については、「エンドポイントの表示または申請」をご参照ください。

    [POLARDB]
    Description = ODBC for POLARDB
    Driver      = /home/user/target/lib/unix/polardb-odbc.so
    Driver64    = /home/user/target/lib/unix/polardb-odbc.so
    Database    = <Name of the database>
    Servername  = <Endpoint of the database>
    Password    = <Password>
    Port        = <Port number>
    Username    = <Username>
    Trace       = yes
    TraceFile   = /tmp/odbc.log
    FileUsage   = 1

PolarDB への接続

  1. Libtool 1.5 以降をインストールします。

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

    yum install -y unixODBC-devel
  3. 接続をテストします。

    $isql -v POLARDB

    接続が成功した場合、次のように表示されます。

    +---------------------------------------+
    | Connected!                            |
    |                                       |
    | sql-statement                         |
    | help [tablename]                      |
    | quit                                  |
    |                                       |
    +---------------------------------------+
    SQL>

UNIX/Linux 向けサンプルコード

ドライバーパッケージ内の samples フォルダには、2 つのテストプログラムが含まれています。

  • Test1:CRUD 操作(挿入、更新、削除、検索)を実演します。

  • Test2:カーソルおよび出力パラメーターの使用方法を実演します。

サンプルデータベースのセットアップ

テストを実行する前に、PolarDB データベース内に emp テーブルを作成し、サンプルデータを挿入します。

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. ドライバーパッケージを展開し、samples フォルダに移動します。

    tar -zxvf polardb-odbc.tar.gz
    cd polardb-odbc/samples
  2. サンプルをコンパイルします。

    make

    これにより、Test1 および Test2 の実行可能ファイルが生成されます。

  3. テストを実行します。

    ./Test1
    ./Test2
説明

以下に示すソースコードは一部のスニペットです。完全なソースコードは、Test1 および Test2 ファイル(samples フォルダ内)にあります。

Test1 — CRUD 操作

Test1 では、単一の接続を使用して、emp テーブルに対して挿入、更新、削除、検索操作を実行します。

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);
    /*追加、削除、更新、照会操作*/
    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 — カーソルおよび出力パラメーター

Test2 では、REFCURSOR 出力パラメーターを返すストアドプロシージャの呼び出し方法を実演します。

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")   ;