Re: javabean to database problem
Date: Sat, 06 Apr 2002 08:09:12 GMT
Message-ID: <H2yr8.222585$702.37074_at_sccrnsc02>
Use the "returning" clause on the insert statement. Unfortunately there's
no JDBC api that will handle the returning values. Put the insert statement
into a stored procedure and have the output as the returned value.
==> stored procedure fragments
insert into EDT_SKILL
newSkillId := retSkillId;
==> Java fragments
"Henry" <hxzhang_at_binary-solutions.net> wrote in message
news:aTor8.9737$hS3.500332_at_news0.telusplanet.net...
create or replace procedure insReturn (
stateId IN number,
.
.
newSkillId OUT number
) is
retSkillId number;
begin
values (stateId, ... displayOrder)
returning edc_skill_id into retSkillId;
end insReturn;
/
show errors
String InsStmt = "call insReturn(?, ?, ?, ?, ?, ?, ?, ?)";
CallableStatement stmt = conn.prepareCall(InsStmt);
stmt.setLong(1, stateId);
.
.
stmt.setLong(7, displayOrder);
stmt.registerOutParameter(8, Types.INTEGER);
stmt.execute();
returnSkillId = stmt.getLong(8);
> I have a table with each row corresponds to a javabean object. The objects
> don't
> necessarily have a primary key, so i use a sequence number as its primary
> key, and a
> trigger to assign the sequence number to its ID column when a new object
is
> inserted
> into the database.
>
> However, after I insert the object into the table, how can i know the
> object's ID in the
> table? If I simply do a "..._seq.cur_val", it is not safe when multiple
> users can access
> the database and save their javabean into it at the same time.
>
> How could you guys accomplish that?
>
>
Received on Sat Apr 06 2002 - 10:09:12 CEST