前言
今天我們來看gaussDB 100的開發。
GaussDB 數據庫驅動
一、驅動
什麼是驅動?
數據庫驅動是應用程序和數據庫存儲之間的一種接口,數據庫廠商爲了某一種開發語言環境(比如Java,C)能夠實現數據庫調用而開發的類似翻譯員功能的程序,將複雜的數據庫操作與通信抽象成爲了當前開發語言的訪問接口。
GaussDB 100同時支持JDBC和ODBC等數據庫驅動。
二、JDBC
JDBC定義:
JDBC(Java Database Connectivity,Java數據庫連接),一種用於執行SQL語句的Java API,可爲多種關係數據庫提供統一訪問接口,應用程序可基於它操作數據。
JDBC開發應用程序的流程如圖
- JDBC安裝配置
-
配置JDBC包
從support網站下下載驅動jar包。解壓後配置在eclipse中jdbc包名:
com.huawei.gauss.jdbc.ZenithDriver.jar
-
加載驅動
在創建數據庫連接之前,需要加載數據庫驅動類,加載羣東的方法:
在代碼中隱含裝載:Class.forName(“com.huawei.gauss.jdbc.ZenithDriver”)
-
連接數據庫
遠程接入數據庫之前,需要在配置文件zengine.ini中設置LSNR_IP和LSNR_PORT偵聽的IP地址和端口號在使用JDBC創建數據庫連接,使用以下函數
DriverManager.getConnection(String url, String user, String password);
數據庫連接參數
參數 | 描述 |
---|---|
url | 數據庫連接描述符格式如下:jdbc:zenith:@ip:port[?key=value[&key=value]…] |
user | 數據庫用戶 |
password | 數據庫用戶的密碼 |
url說明:
ip爲數據庫服務器名稱。port爲數據庫服務器端口。url連接屬性通過&符號進行分割。每個屬性是一個key=value對。
- JDBC接口
JDBC常用接口:
接口名稱 | 功能簡述 |
---|---|
java.sql.Connection | 數據庫連接接口 |
java.sql.DatabaseMetaData | 數據庫對象定義接口 |
java.sql.Driver | 數據庫驅動接口 |
java.sql.PreparedStatement | 預處理語句接口 |
java.sql.ResultSet | 執行結果集接口 |
java.sql.ResultSetMetaData | 對ResultSet對象相關信息的具體描述 |
java.sql.Statement | SQL語句接口 |
java.sql.CallableStatement | SQL語句接口,主要用於執行存儲過程 |
java.sql.Blob | Blob接口,主要用於綁定或獲取數據庫Blob字段 |
java.sql.Clob | Clob接口,主要用於綁定或獲取數據庫Clob字段 |
三、ODBC
ODBC定義:
ODBC(Open Database Connectivity,開放數據庫互連),是由Microsoft公司基於X/OPEN CLI提出的用於訪問數據庫的應用程序編程接口。
ODBC開發應用程序的流程圖:
應用程序通過ODBC提供的API與數據庫進行交互,在避免了應用程序直接操作數據庫系統的同時,增強了應用程序的可移植性、擴展性和可維護性。
- ODBC安裝配置
-
獲取unixODBC源碼包
參考地址:http://www.unixodbc.org/,下載文件unixODBC-2.3.7.tar.gz或以上版本 -
編譯安裝unixODBC
在編譯安裝unixODBC過程中,unixODBC默認安裝到“/usr/local”目錄下,生成數據源文件到 “/usr/local/etc”目錄下,庫文件生成在“/usr/local/lib”目錄。
tar -zxvf unixODBC-2.3.7.tar.gz
cd unixODBC-2.3.7
./configure --enable-gui=no
make install
-
配置ODBC驅動文件
GaussDB 100 ODBC驅動包” GAUSSDB100-VxxxRxxxCxx-CLIENT-ODBC-SUSE11SP3-64bit.tar.gz”
解壓到ODBC驅動目錄”/usr/local/lib”下
tar -zxvf GAUSSDB100-VxxxRxxxCxx-CLIENT-ODBC-SUSE11SP3-64bit.tar.gz
- 在“/usr/local/etc/odbcinst.ini”文件中追加以下內容。
[GaussDB] 驅動器名稱,對應數據源DSN中的驅動名
Driver64=/usr/local/odbc/lib/libzeodbc.so 驅動動態庫的路徑
setup=/usr/local/lib/libzeodbc.so 驅動安裝路徑,與Driver64中動態庫的路徑一致
- 在“/usr/local/etc/odbc.ini ”文件中追加以下內容。
[zenith] 數據源名稱
Driver=DRIVER_N 驅動名,對應odbcinst.ini中的DriverName
Servername=192.168.0.1 數據庫服務器的IP地址
Port=1888 數據庫偵聽端口
- 配置環境變量
export LD_LIBRARY_PATH=/usr/local/lib/:$LD_LIBRARY_PATH
export ODBCSYSINI=/usr/local/etc
export ODBCINI=/usr/local/etc/odbc.ini
- ODBC常用接口
接口名稱 | 功能簡述 |
---|---|
SQLAllocHandle | 申請環境、連接、語句句柄 |
SQLFreeHandle | 用於釋放ODBC的句柄 |
SQLSetEnvAttr | 用於設置ODBC的環境句柄屬性 |
SQLSetConnectAttr | 用於設置ODBC的鏈接句柄屬性 |
SQLSetStmtAttr | 用於設置ODBC的執行句柄屬性 |
SQLConnect | 使用鏈接句柄鏈接數據源 |
SQLDisconnect | 斷開和數據源的鏈接 |
SQLPrepare | 準備要執行的SQL語句 |
SQLBindParameter | 往準備好SQL的執行句柄綁定參數 |
SQLBindCol | 綁定結果集列存放緩衝區 |
SQLExecute | 執行SQL語句 |
SQLFetch | 獲取下一行結果 |
四、其他驅動
GaussDB 100除了支持基於JDBC和ODBC驅動的開發,還支持基於GSC(C-API),Python和GO驅動的開發
- GSC(C-API):依賴的庫爲libzeclient.so,頭文件爲gsc.h。
- Go驅動:Go驅動以源碼的形式發佈,上層應用將代碼import到應用項目中,和應用程序編譯到一起使用。從文件層面看Go驅動分爲三個部分:Go API、C驅動庫和C頭文件
- python驅動動態庫:pyzenith.so。使用Python驅動連接數據庫時,通過調用pyzenith.connect方法來獲取Connection建立連接