Tuesday, 15 January 2013

oracle - How to Create Database IDs from Java Code? -



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