全部产品
Search
文档中心

PolarDB:ODBC

更新时间:Jul 06, 2025

Topik ini menjelaskan cara menggunakan driver Open Database Connectivity (ODBC) untuk menghubungkan aplikasi UNIX atau Windows ke kluster PolarDB for PostgreSQL (Kompatibel dengan Oracle).

Prasyarat

  • Seorang pengguna telah dibuat di kluster PolarDB. Untuk informasi tentang cara membuat pengguna, lihat Buat akun database.

  • Alamat IP dari host yang digunakan untuk mengakses kluster PolarDB telah ditambahkan ke daftar putih kluster. Untuk informasi lebih lanjut tentang cara menambahkan alamat IP ke daftar putih kluster, lihat Konfigurasikan daftar putih untuk kluster.

  • Untuk Windows, pastikan sistem operasi adalah Windows 7 atau versi lebih baru dan Service Pack 1 telah diinstal.

  • Untuk sistem operasi UNIX atau Linux, pastikan alat-alat berikut telah diinstal:

    • Libtool 1.5.10 atau versi lebih baru.

    • unixODBC-devel.

    • PolarTools. Untuk informasi lebih lanjut tentang unduhan dan instalasi, lihat PolarDB-Tools.

Unduh driver

Instal driver ODBC di Windows

  1. Unduh paket instalasi driver yang sesuai dengan arsitektur dan versi OS Anda. Untuk informasi lebih lanjut, lihat Unduh Driver.

  2. Ekstrak paket instalasi.

  3. Jalankan file install.bat sebagai administrator, lalu tekan tombol acak untuk keluar.

    Install the ODBC driver in Windows

  4. Opsional:Untuk menghapus instalasi driver ODBC, jalankan file uninstall.bat.

Gunakan driver ODBC untuk terhubung ke PolarDB dari Server Windows

  1. Di Control Panel, buka Administrative Tools.

  2. Di halaman Administrative Tools, temukan dan jalankan ODBC Data Sources.

  3. Dalam kotak dialog ODBC Data Source Administrator, klik Add.

  4. Pilih POLARDB (UNICODE) sebagai driver untuk sumber data, lalu klik Finish.

  5. Dalam kotak dialog yang muncul, konfigurasikan parameter berikut.

    Parameter

    Deskripsi

    Sumber Data

    Nama dari sumber data.

    Deskripsi

    Deskripsi dari sumber data.

    Database

    Nama dari kluster.

    Mode SSL

    Menentukan apakah akan mengaktifkan enkripsi berbasis SSL.

    Server

    Titik akhir dari database. Untuk informasi lebih lanjut tentang cara memeriksa titik akhir dari kluster PolarDB, lihat Lihat atau ajukan permohonan untuk titik akhir.

    Prot

    Port yang digunakan untuk terhubung ke database. Nilai default: 1521.

    Nama Pengguna

    Nama pengguna dari akun database.

    Kata Sandi

    Kata sandi dari akun database.

  6. Klik Save.

Instal driver ODBC di Unix atau Linux

  1. Jalankan perintah berikut untuk mengonfigurasi variabel lingkungan LD_LIBRARY_PATH:

    export LD_LIBRARY_PATH=<PolarDB-ODBC/lib/path>
  2. Jalankan perintah berikut untuk mengonfigurasi variabel lingkungan ODBCINI:

    export ODBCINI=<path file odbc.init Anda>
  3. Unduh driver ODBC berdasarkan arsitektur dan versi OS Anda. Untuk informasi lebih lanjut, lihat Unduh Driver.

  4. Instal driver ODBC.

    Catatan

    Setelah mengekstrak paket instalasi, Anda dapat langsung menggunakan driver ODBC. Jalankan perintah berikut untuk mengekstrak paket:

    tar -zxvf polardb-odbc.tar.gz

    Kode berikut menunjukkan struktur direktori:

    ├── include
    ├── lib
    └── samples
    3 direktori

Gunakan driver ODBC untuk terhubung ke PolarDB dari server UNIX atau Linux

  1. Instal Libtool pada Server Linux. Versi Libtool harus 1.5.1 atau yang lebih baru.

    yum install -y libtool
  2. Instal unixODBC-devel pada Server Linux.

    yum install -y unixODBC-devel
  3. Ubah file odbc.ini yang telah dikonfigurasi.

    vim $ODBCINI 
  4. Tambahkan konten berikut ke file odbc.ini:

    [POLARDB]
    Description = ODBC untuk POLARDB
    Driver      = /home/user/target/lib/unix/polardb-odbc.so
    Driver64    = /home/user/target/lib/unix/polardb-odbc.so
    Database    = <Nama database>
    Servername  = <Titik akhir database>
    Password    = <Kata sandi>
    Port        = <Nomor port>
    Username    = <Nama pengguna>
    Trace       = yes
    TraceFile   = /tmp/odbc.log
    FileUsage   = 1
    Catatan
  5. Terhubung ke PolarDB.

    $isql -v POLARDB
    +---------------------------------------+
    | Terhubung!                            |
    |                                       |
    | pernyataan-sql                        |
    | bantuan [namatabel]                   |
    | keluar                                |
    |                                       |
    +---------------------------------------+
    SQL>

Contoh untuk UNIX atau Linux

Contoh berikut menunjukkan cara menjalankan file Test1 dan Test2.

Buat skema tabel berikut di database PolarDB terlebih dahulu dan masukkan data berikut:

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. Jalankan perintah berikut untuk mengekstrak paket driver ODBC:

    tar -zxvf polardb-odbc.tar.gz
  2. Jalankan perintah berikut untuk membuka folder polardb-odbc:

    cd polardb-odbc
  3. Buka rentang samples di folder driver ODBC.

    cd samples
  4. Kompilasi contoh uji. File uji berikut dihasilkan: Test1 dan Test2.

    make
  5. Jalankan Test1 dan Test2.

    ./Test1
    ## Jalankan Test1.
    
    ./Test2
    ## Jalankan Test2.
    Catatan
    • Test1 berisi contoh di mana operasi tambah, hapus, perbarui, dan kueri dilakukan. Test2 berisi contoh di mana kursor dan parameter keluaran digunakan.

    • Kode sampel berikut hanya sebagian dari kode sumber. Untuk melihat kode sumber lengkap, periksa file Test1 dan Test2 di folder samples dalam paket driver ODBC.

Kode sampel Test1:

... 

int main(int argc, char* argv[])
{
    /*Inisialisasi*/
    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);
    /*Operasi tambah, hapus, ubah, dan kueri*/
    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");
    /*Putuskan koneksi*/
    Disconnect(&hEnv,&hDBC,&hStmt);
    /*bersihkan*/
    free(hEnv);
    free(hDBC);
    free(hStmt);

    return 0;
}

Kode sampel untuk Test2:

int main(int argc, char* argv[])
{
    /*Definisi*/
    RETCODE rCode;
    SQLUSMALLINT a;
    SQLINTEGER Num1IndOrLen;
    SQLSMALLINT iTotCols = 0;

    int j;
    SDWORD cbData;
    /*Inisialisasi*/
    HENV *hEnv = (HENV*)malloc(sizeof(HENV));
    HDBC *hDBC = (HDBC*)malloc(sizeof(HDBC));
    HSTMT *hStmt = (HSTMT*)malloc(sizeof(HSTMT));
    HSTMT *hStmt1 = (HSTMT*)malloc(sizeof(HSTMT));
    /**Buat koneksi**/
    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);
    /*mulai*/
    ExecuteSimple_Select(&hStmt1,(UCHAR*) "BEGIN;");
    /*siapkan*/
    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;
    /*eksekusi*/
    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 Kursor Pertama sebagai Parameter Keluaran \n")   ;