当前位置: 技术问答>java相关
如何获得刚存入的一条数据的ID?
来源: 互联网 发布时间:2015-02-08
本文导语: 我在oracle里有一个表,字段sys_unid为主键,唯一,而且是自动增长的,我的触发器是这样写的: declare next_forum_id number; BEGIN select g_forum_id.NEXTVAL into next_forum_id from dual; :new.sys_unid := next_forum_i...
我在oracle里有一个表,字段sys_unid为主键,唯一,而且是自动增长的,我的触发器是这样写的:
declare
next_forum_id number;
BEGIN
select g_forum_id.NEXTVAL
into next_forum_id
from dual;
:new.sys_unid := next_forum_id;
END;
其中g_forum_id为序列,自动增长1。
但现在每次往数据库里加数据它不是加1,而是不知加了几,反正是增长了。
现在我在jsp中加了一条数据后,想马上获得该条数据的唯一标识sys_unid.该怎么获得?
declare
next_forum_id number;
BEGIN
select g_forum_id.NEXTVAL
into next_forum_id
from dual;
:new.sys_unid := next_forum_id;
END;
其中g_forum_id为序列,自动增长1。
但现在每次往数据库里加数据它不是加1,而是不知加了几,反正是增长了。
现在我在jsp中加了一条数据后,想马上获得该条数据的唯一标识sys_unid.该怎么获得?
|
看下我写的吧,对你绝对有帮助,别忘了加分啊:
create table person(id number(12,0) not null primary key,name char(10) not null,sex char(3) not null);
create sequence id;
CREATE OR REPLACE PROCEDURE addperson(p_name in varchar2,p_sex in varchar2,idReturn out number) IS
temp_id number;
BEGIN
select id.nextval into temp_id from dual;
insert into person(id,name,sex) values(temp_id,p_name,p_sex);
idReturn:=temp_id;
END addperson;
import java.sql.*;
import java.lang.*;
import oracle.jdbc.driver.*;
public class OracleDB2
{
public static void main(String[] args)
{
ResultSet rs=null;
CallableStatement call=null;
try {
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
Connection conn =
DriverManager.getConnection("jdbc:oracle:thin:@192.168.1.115:1521:OracleDB","scott","tiger");
call=conn.prepareCall("{ call addperson (?,?,?) }");
call.registerOutParameter(3,java.sql.Types.INTEGER);
call.setString(1, "小路");
call.setString(2, "女");
call.execute();
int id=call.getInt(3);
Statement stmt=conn.createStatement();
String sql="select * from person where id="+id;
rs=stmt.executeQuery(sql);
}catch(Exception e)
{System.out.println("error:"+e);}
try{
// 获得数据结果集合
ResultSetMetaData rmeta = rs.getMetaData();
// 确定数据集的列数,亦字段数
int numColumns=rmeta.getColumnCount();
// 输出每一个数据值
for(int i=1;i
create table person(id number(12,0) not null primary key,name char(10) not null,sex char(3) not null);
create sequence id;
CREATE OR REPLACE PROCEDURE addperson(p_name in varchar2,p_sex in varchar2,idReturn out number) IS
temp_id number;
BEGIN
select id.nextval into temp_id from dual;
insert into person(id,name,sex) values(temp_id,p_name,p_sex);
idReturn:=temp_id;
END addperson;
import java.sql.*;
import java.lang.*;
import oracle.jdbc.driver.*;
public class OracleDB2
{
public static void main(String[] args)
{
ResultSet rs=null;
CallableStatement call=null;
try {
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
Connection conn =
DriverManager.getConnection("jdbc:oracle:thin:@192.168.1.115:1521:OracleDB","scott","tiger");
call=conn.prepareCall("{ call addperson (?,?,?) }");
call.registerOutParameter(3,java.sql.Types.INTEGER);
call.setString(1, "小路");
call.setString(2, "女");
call.execute();
int id=call.getInt(3);
Statement stmt=conn.createStatement();
String sql="select * from person where id="+id;
rs=stmt.executeQuery(sql);
}catch(Exception e)
{System.out.println("error:"+e);}
try{
// 获得数据结果集合
ResultSetMetaData rmeta = rs.getMetaData();
// 确定数据集的列数,亦字段数
int numColumns=rmeta.getColumnCount();
// 输出每一个数据值
for(int i=1;i