前言
今天我们来看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建立连接