oracle - How to Create Database IDs from Java Code? -
i manually incrementing id number in database can't work automatically. project , doesn't matter if doesn't work automatically - can seek , solve later.
i creating method checks lowest free id number in resultset. lowest set integer called availableid users given upon registration.
this have got far reading:
http://docs.oracle.com/javase/6/docs/api/java/sql/resultset.html http://wiki.netbeans.org/getstartedwithjavadb
as example, these ids in database:
/,2,/,4,5,6,/,8,9
1, 3 , 7 missing users deleted accounts. want fill number 1 before fill others , next user register number 3 example.
public int getavailableid() { int availableid = 1; seek { string stmt = "select pid app.person"; preparedstatement ps = main.getpreparedstatement(stmt); resultset rs = ps.executequery(); while (rs.next()) { int n = rs.getint(1); int n2 = rs.next().getint(1); if (!(n == 1)) { homecoming availableid; } else if (!(n2-- == n)) { availableid = n++; } } rs.close(); ps.close(); } grab (exception e) { system.out.println(e); } homecoming availableid; }
two problems here:
rs.next()
returns boolean, want n2 hold value of integer in next row - can't find method here - http://docs.oracle.com/javase/6/docs/api/java/sql/resultset.html i can't figure out how loop through find lowest possible free id number. please excuse rubbish code! learning lot go along , understand bad practice 1 , 2 code isn't great.
how can go doing this?
your code wrong. needs changed:
rs.next().getint(1);
to just:
rs.getint("pid");
rs.next()
2 things. returns true if there next row, , moves resultset cursor point next row.
when there no next row homecoming false , hence break out loop.
when phone call getint
seek retrieve int current row. can see rs.next()
in loop status move next row each time.
also in case need declare
int n
outside of loop.
and assign n = n2
@ end of each loop iteration.
something this:
int n = 0; while (rs.next()) { int n2 = rs.getint(1); if (!(n == 1)) { homecoming availableid; } else if (!(n2-- == n)) { availableid = n++; } n = n2; }
you may need play around doing want.
my final comment, dont bother trying lowest possible free id number, highest number database usign sql max() or , add together 1.
java oracle resultset javadb
No comments:
Post a Comment