返回首页

gbase数据、南大通用产品文档:GBase8sGBase 8s ODBC Driver API

更新日期:2024年09月11日

应用程序使用 GBase 8s ODBC Driver API 建立与数据源的连接,
将 SQL 语句发送至数据
源,动态地处理结果数据,并终止连接。
驱动程序允许应用程序执行下列步骤:
1. 连接至数据源。
可以通过 DSN 连接来连接数据源,也可以使用 DSN-less 连接字符串。指定数据
源的名称和完成连接所需的任何附加信息。
2. 处理一个或多个 SQL 语句:
a. 将 SQL 文本字符串置于缓冲区中。
如果该语句包括参数标记,
则设置参数值。
b. 如果该语句返回结果集,则为该语句分配一个游标名称,或让驱动程序分配一
个。
c. 准备该语句,或者提交立即执行。
d. 如果该语句创建结果集,则可查询结果集的属性,诸如列数,以及特定列的名
称和类型。对于结果集中每一列,请指定存储和访存结果。
e. 如果该语句导致错误,则从驱动程序检索错误信息,并采取恰当的措施。
3. 通过提交或回滚来结束任何事务。
4. 当应用程序结束与数据源的交互时,终止连接。
每个 GBase 8s ODBC Driver 函数名称都以前缀 SQL 开始。
每一函数接受一个或多个参数。
定义参数作为(至驱动程序的)输入或(来自驱动程序的)输出。
下图展示了应用程序进行的基本函数调用,即使应用程序通常也调用其他函数。
图: GBase 8s ODBC Driver应用程序进行的函数调用的示例列表


GBase 8s ODBC Driver 程序员指南
南大通用数据技术股份有限公司
- 13 -

java.sql.Statement
java.sql.Statement 是SQL 语句接口。
表8-8 对java.sql.Statement 的支持情况
方法名
返回值类型
支持JDBC 4
addBatch(String sql)
void
Yes
clearBatch()
void
Yes
clearWarnings()
void
Yes
close()
void
Yes
closeOnCompletion()
void
Yes
execute(String sql)
Boolean
Yes
execute(String
sql,
int
autoGeneratedKeys)
Boolean
Yes
execute(String sql, int[] columnIndexes)
Boolean
Yes
execute(String
sql,
String[]
columnNames)
Boolean
Yes
executeBatch()
Boolean
Yes
executeQuery(String sql)
ResultSet
Yes
executeUpdate(String sql)
int
Yes
executeUpdate(String
sql,
int
autoGeneratedKeys)
int
Yes
executeUpdate(String
sql,
int[]
columnIndexes)
int
Yes

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
244
executeUpdate(String
sql,
String[]
columnNames)
int
Yes
getConnection()
Connection
Yes
getFetchDirection()
int
Yes
getFetchSize()
int
Yes
getGeneratedKeys()
ResultSet
Yes
getMaxFieldSize()
int
Yes
getMaxRows()
int
Yes
getMoreResults()
boolean
Yes
getMoreResults(int current)
boolean
Yes
getResultSet()
ResultSet
Yes
getResultSetConcurrenc y()
int
Yes
getResultSetHoldability(
)
int
Yes
getResultSetType()
int
Yes
getQueryTimeout()
int
Yes
getUpdateCount()
int
Yes
getWarnings()
SQLWarning
Yes
isClosed()
Boolean
Yes
isCloseOnCompletion()
Boolean
Yes
isPoolable()
Boolean
Yes
setCursorName(String name)
void
Yes
setEscapeProcessing (boolean enable)
void
Yes
setFetchDirection(int direction)
void
Yes

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
245
setMaxFieldSize(int max)
void
Yes
setMaxRows(int max)
void
Yes
setPoolable(boolean poolable)
void
Yes
setQueryTimeout(int seconds)
void
Yes
setFetchSize(int rows)
void
Yes
cancel()
void
Yes
executeLargeUpdate(Str ing sql)
long
No
getLargeUpdateCount()
long
No
executeLargeBatch()
long
No
executeLargeUpdate(Str
ing
sql,
int
autoGeneratedKeys)
long
No
executeLargeUpdate(Str ing sql, int[]
columnIndexes)
long
No
executeLargeUpdate(Str
ing
sql,
String[] columnNames)
long
No

通过setFetchSize 可以减少结果集在客户端的内存占用情况。它的原理是通过将结
果集打包
成游标,然后分段处理,
所以会加大数据库与客户端的通信量,会有性
能损耗。

由于数据库游标是事务内有效,所以,在设置setFetchSize 的同时,需要将连接设
置为非自动提交模式,
setAutoCommit(false)。
同时在业务数据需要持久化到数据库
中时,在连接上执行提交操作。

LargeUpdate 相关方法必须在JDBC4.2 及以上使用。

FOR_LOOP(integer 变量)语句
语法图
说明:- 变量name 会自动定义为integer 类型并且只在此循环里存在。
变量name
介于lower_bound 和upper_bound 之间。- 当使用REVERSE 关键字时,lower_bound 必须
大于等于upper_bound,否则循环体不会被执行。