oracle 获取插入 id getGeneratedKeys
来源:互联网 发布:如何给mac本地装软件 编辑:程序博客网 时间:2024/06/04 01:26
http://blog.csdn.net/xpsharp/article/details/7678028
ORACLE JDBC的getGeneratedKeys
对于JDBC 3.0, 使用statement.getGeneratedKeys()可以返回刚刚插入的记录的自动增长的ID值。对于ORACLE,一般是定义一个序列,然后利用序列的nextval来自动给列分配ID值。但是很多人发现,在利用ORACLE JDBC驱动编写的时候,往往会失败。显示“java.sql.SQLException: Unsupported feature”。
其实,对于ORACLE JDBC,只有在10.2.0.1.0版本后的JDBC才支持getGeneratedKeys特性。而且如果使用下列代码:
String sql = "INSERT INTO FOO (NAME) VALUES ('BAR')";
Statement stmt = connection.createStatement();
stmt.executeUpdate(sql, Statement.RETURN_GENERATED_KEYS);
ResultSet rs = stmt.getGeneratedKeys();
oracle.sql.ROWID rid = (oracle.sql.ROWID) rs.getObject(1); //getLong and getInt fail
// The following fail
// long l = rid.longValue();
// int i = rid.intValue();
String s = rid.stringValue(); // s equals "AAAXcTAAEAAADXYAAB"
返回的将是ROWID值。可以使用下列代码:
String sql = "INSERT INTO ORDERS (ORDER_ID, CUSTOMER_ID) VALUES (ORDER_ID_SEQ.NEXTVAL, ?)";
String generatedColumns[] = {"ORDER_ID"};
PreparedStatement pstmt = conn.prepareStatement(sql, generatedColumns);
pstmt.setLong(1, customerId);
pstmt.executeUpdate();
ResultSet rs = pstmt.getGeneratedKeys();
rs.next();
// The generated order id
long orderId = rs.getLong(1);
能得到正确的ID值。注意,其中generatedColumns[]表示从哪个列来获取新的ID值。我们也可以使用:
int a[]={1};
PreparedStatement pstmt = conn.prepareStatement(sql, a);
......
来表示第1列是KEY列,我们要获取第1列的新插入的值。
目前(20071219)ORACLE JDBC最新的是11g1,推荐使用。http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/htdocs/jdbc_11...
另外,Jdeveloper 10.1.3.3里面携带的JDBC驱动也不支持getGeneratedKeys。需要进行更新。
当然,也可以使用第三方的JDBC驱动,如i-net software的Oranxo驱动,支持getGeneratedKeys,而且驱动程序的体积更小。
- oracle 获取插入 id getGeneratedKeys
- 通过getGeneratedKeys()获取主键
- ORACLE JDBC的getGeneratedKeys
- ORACLE JDBC的getGeneratedKeys
- ORACLE JDBC的getGeneratedKeys
- oracle插入数据时获取自增ID
- Oracle插入数据时获取自增ID
- Oracle插入数据并获取自增长序列ID方法
- 获取oracle刚插入数据的自增id值
- mysql获取插入ID
- 在JAVA中查询刚插入的记录ID 利用JDBC的getGeneratedKeys获得INSERT插入后生成的主键ID
- 在JAVA中查询刚插入的记录ID 利用JDBC的getGeneratedKeys获得INSERT插入后生成的主键ID
- ibatis获取主键自动增长ID(Oracle/MSSQL/mysql),取得刚插入的ID编号
- 获取主键自动增长ID(Oracle/MSSQL/mysql),取得刚插入的ID编号
- ibatis获取主键自动增长ID(Oracle/MSSQL/mysql),取得刚插入的ID编号
- ibatis获取主键自动增长ID(Oracle/MSSQL/mysql),取得刚插入的ID编号
- 插入记录后获取ID
- 插入记录 获取ID ---------MSDN
- GDB基本命令(整合)
- iPhone开发经典语录
- android-初体验
- Makefile中常用的函数
- 去相关与维纳滤波
- oracle 获取插入 id getGeneratedKeys
- IOS7状态栏适配(一)
- discuz x后台设置签名字数无效
- 调用WCF时报错:服务器未提供有意义的回复;这可能是由协定不匹配、会话过早关闭或内部服务器错误引起的。
- ralink5350 gpio按键学习记录(602)
- C++基本语法(中)
- 编程为什么有趣?
- IOS7状态栏适配(二)
- C++基本语法(下)