sql-problem, ResultSet

Java

2 svar · 401 visningar · startad av orvar

Medlem sedan feb. 2001105 inlägg
Trådstart#1

Tjena
Har följande kod:

  public Vector executeDbReader(String inSql, int inNumber) throws Exception {
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    Connection conn = null;
    ResultSet rs = null;
    Statement stmt = null;
    Vector result = new Vector();
    try {
        String url = "jdbc:odbc:dapptst";
        conn = DriverManager.getConnection(url,namn,lös);
        stmt = conn.createStatement();
        rs = stmt.executeQuery(inSql);    
    } catch (Exception exc) {
    } finally {
        rs.close();
        stmt.close();
        conn.close();
    }     
        result.addElement(rs.getObject(0));

Koden som den ser ut nu är enbart för testsyfte för att få kontakten med Oracledatabasen att fungera. Det verkar ske en kontakt med databasen, men det blir fel när

result.addElement(rs.getObject(0));

anropas. Ser någon direkt vad som kan vara fel, eller var man bör kolla lite extra?

Tackar!

Medlem sedan juli 2001228 inlägg
#2

Du glömmer att stega fram ResultSet'et till första raden:

rs.next();

Sen kanske du bör göra allt detta innanför try, catch, finally satsen. Kommer inte riktigt ihåg nu men eventuellt stängs alltihop i finally satsen innan du gör:

result.addElement(rs.getObject(0));

som det ser ut nu.

En bra variant är också:


if(rs.next()) {
   result.addElement(rs.getObject(0));
}

mvh
phonk

Medlem sedan feb. 2001105 inlägg
#3

yep, det var att finally stänger allt för tidigt... samt att rs börjar på 1.

tackar!

262 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)