webForumDet fria alternativet

sql-problem, ResultSet

2 svar · 393 visningar · startad av orvar

orvarMedlem sedan feb. 2001109 inlägg
#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!

phonkworksMedlem 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

orvarMedlem sedan feb. 2001109 inlägg
#3

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

tackar!

Genererad på 376 ms · cache AV · v20260730165559-full.f96bc7eb