更新日期:2024年09月11日
本示例实现了使用Statement.getGeneratedKeys()获取AUTO_INCREMENT 列的值。
示例如下:
package com.gbase.jdbc.simple;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
GBase UP 产品手册 6 应用开发指南
文档版本04(2021-04-21) 南大通用数据技术股份有限公司 1101
import java.sql.Statement;
public class SampleGetGeneratedKeys {
public static void main(String[] args) {
try {
(new SampleGetGeneratedKeys()).test();
} catch (Exception ex) {
}
}
public void test() throws Exception {
Connection conn = null;
try {
Class.forName("com.gbase.jdbc.Driver").newInstance();
conn = DriverManager
.getConnection("jdbc:gbase://192.168.5.210:5258/test?user=root&password=");
Statement stmt = null;
ResultSet rs = null;
try {
// 创建Statement 对象
stmt = conn.createStatement(
java.sql.ResultSet.TYPE_FORWARD_ONLY,
java.sql.ResultSet.CONCUR_UPDATABLE);
// 创建表
stmt.executeUpdate("DROP TABLE IF EXISTS autoIncTutorial");
stmt.executeUpdate("CREATE TABLE autoIncTutorial ("
+ "priKey INT NOT NULL AUTO_INCREMENT, "
+ "dataField VARCHAR(64), PRIMARY KEY (priKey))");
// 插入一条数据
stmt.executeUpdate("INSERT INTO autoIncTutorial (dataField) "
+ "values ('Can I Get the Auto Increment Field?')",
Statement.RETURN_GENERATED_KEYS);
// 使用Statement.getGeneratedKeys()获取自增一字段
int autoIncKeyFromApi = -1;
rs = stmt.getGeneratedKeys();
if (rs.next()) {
autoIncKeyFromApi = rs.getInt(1);
}
GBase UP 产品手册 6 应用开发指南
文档版本04(2021-04-21) 南大通用数据技术股份有限公司 1102
rs.close();
rs = null;
System.out.println("Key returned from getGeneratedKeys():"
+ autoIncKeyFromApi);
} finally {
if (rs != null) {
try {
rs.close();
} catch (SQLException ex) {
}
}
if (stmt != null) {
try {
stmt.close();
} catch (SQLException ex) {
}
}
}
} catch (SQLException ex) {
// 处理错误
System.out.println("SQLException: " + ex.getMessage());
System.out.println("SQLState: " + ex.getSQLState());
System.out.println("VendorError: " + ex.getErrorCode());
} finally {
conn.close();
}
}
}
表1.1 中列举了GCI 支持的数据类型:
数据类型
类型说明
SQLT_CHR
变长字符串类型
SQLT_STR
变长字符串类型
SQLT_AFC
定长字符串
SQLT_VCS
变长字符串
SQLT_AVC
变长字符串
SQLT_INT
整数类型
SQLT_FLT
浮点数类型
SQLT_BIN
二进制类型
SQLT_CLOB
大对象数据,文本数据
SQLT_BLOB
大对象数据,二进制数据
SQLT_ODT
时间类型(datetime )
SQLT_DAT
时间类型(datetime )
SQLT_BFLOAT
单精度浮点
SQLT_BDOUBLE
双精度浮点
SQLT_IBFLOAT
二进制单精度浮点(与SQLT_BFLOAT 同)
SQLT_IBDOUBLE
二进制双精度浮点(与SQLT_BDOUBLE 同)
SQLT_DATE
日期数据
SQLT_TIME
时间数据类型
SQLT_TIMESTAMP
时间戳类型
SQLT_INTERVAL_YM
Interval 年月数据类型
SQLT_INTERVAL_DS
Interval 天秒数据类型
SQLT_NUM
数字型类型