JDBC插入操作时,通过return返回主键
2013-08-29 13:54
148 查看
转载自:http://blog.csdn.net/kkdelta/article/details/4640029
在应用中,很多时候会对表的主键用一个自动增涨的数来付值,如Oracle的sequence,插入后又想得到的主键的值。下面介绍一下相关的方法。
1,用Oracle 的returning 语句。
PreparedStatement sta = conn.prepareStatement("INSERT INTO LOGGING VALUES (TESTSEQ.NEXTVAL,SYSDATE)returning id into ? ");
sta.execute();
ResultSet rset = sta.getResultSet();
while(rset.next())
{
int id = rset.getInt(1);
}
如果是既有传入值,又有返回值的话,应该:
PreparedStatement sta = conn.prepareStatement("BEGININSERT INTO LOGGING VALUES
(TESTSEQ.NEXTVAL,? )returning id into ?; END; ");
sta = conn.prepareCall(sqlText);
sta .setString(1, srqID);
sta .registerOutParameter(2, Types.NUMERIC);
sta .execute();
return sta .getLong(2);
或者用oracle的 OraclePreparedStatement
String sql = "insert into test values(1,?) returning id into ?";
OraclePreparedStatement pstt = (OraclePreparedStatement) conn.prepareStatement(sql);
pstt.setString(1, "xxx");
pstt.registerReturnParameter(2, OracleTypes.INTEGER);
pstt.executeUpdate();
ResultSet rset = pstt.getReturnResultSet(); // rest is not null
while (rset.next()) {
int id = rset.getInt(1);
System.out.println("Insert returnning: " + id);
}
2,用JDBC的getGeneratedKeys,返回的是Oracle 的rowid.
PreparedStatement sta = conn.prepareStatement("INSERT INTO TESTTABLE VALUES (TESTSEQ.NEXTVAL,'aaaa')",Statement.RETURN_GENERATED_KEYS);
sta.execute();
System.out.println(sta.getGeneratedKeys());
ResultSet rest = sta.getGeneratedKeys();
rest.next();
//oracle rowid
System.out.println(rest.getString(1));
在应用中,很多时候会对表的主键用一个自动增涨的数来付值,如Oracle的sequence,插入后又想得到的主键的值。下面介绍一下相关的方法。
1,用Oracle 的returning 语句。
PreparedStatement sta = conn.prepareStatement("INSERT INTO LOGGING VALUES (TESTSEQ.NEXTVAL,SYSDATE)returning id into ? ");
sta.execute();
ResultSet rset = sta.getResultSet();
while(rset.next())
{
int id = rset.getInt(1);
}
如果是既有传入值,又有返回值的话,应该:
PreparedStatement sta = conn.prepareStatement("BEGININSERT INTO LOGGING VALUES
(TESTSEQ.NEXTVAL,? )returning id into ?; END; ");
sta = conn.prepareCall(sqlText);
sta .setString(1, srqID);
sta .registerOutParameter(2, Types.NUMERIC);
sta .execute();
return sta .getLong(2);
或者用oracle的 OraclePreparedStatement
String sql = "insert into test values(1,?) returning id into ?";
OraclePreparedStatement pstt = (OraclePreparedStatement) conn.prepareStatement(sql);
pstt.setString(1, "xxx");
pstt.registerReturnParameter(2, OracleTypes.INTEGER);
pstt.executeUpdate();
ResultSet rset = pstt.getReturnResultSet(); // rest is not null
while (rset.next()) {
int id = rset.getInt(1);
System.out.println("Insert returnning: " + id);
}
2,用JDBC的getGeneratedKeys,返回的是Oracle 的rowid.
PreparedStatement sta = conn.prepareStatement("INSERT INTO TESTTABLE VALUES (TESTSEQ.NEXTVAL,'aaaa')",Statement.RETURN_GENERATED_KEYS);
sta.execute();
System.out.println(sta.getGeneratedKeys());
ResultSet rest = sta.getGeneratedKeys();
rest.next();
//oracle rowid
System.out.println(rest.getString(1));
相关文章推荐
- MyBatis魔法堂:Insert操作详解(返回主键、批量插入)
- MyBatis魔法堂:Insert操作详解(返回主键、批量插入)
- MyBatis在insert插入操作时返回主键ID的配置(推荐)
- 初学JDBC,获取插入记录的主键、执行批量操作
- MyBatis在insert插入操作时返回主键ID的配置
- myBatis插入操作后返回主键(超简单的方法)
- MyBatis:Insert操作详解(返回主键、批量插入)
- MyBatis在insert插入操作时返回主键ID的配置
- MyBatis魔法堂:Insert操作详解(返回主键、批量插入)
- mybatis 进行插入操作,如何返回主键问题
- MyBatis在insert插入操作时返回主键ID的配置
- Mybatis(二):插入操作返回主键
- 记录学习的点滴(MyBatis中插入操作返回主键)
- Mybatis插入操作 主键自增 返回成功 但是数据库没有数据
- MyBatis在insert插入操作时返回主键ID的配置
- JDBC之获取插入语句返回的主键
- jdbc 插入记录后返回主键
- 利用JDBC3.0返回插入操作产生的主键值
- Mybatis之Insert操作详解(返回主键、批量插入)
- MyBatis魔法堂:Insert操作详解(返回主键、批量插入)