Avatar billede delley Nybegynder
12. juli 2004 - 15:20 Der er 7 kommentarer og
1 løsning

JDBC til MS access SQLException: No data found

Hej,

Jeg får en SQLExcpetion når jeg prøver at læse ResultSet fra en query i mod en MS Access database.

Code:

private static final String selectAll = ("select * from music");

try{
  rs = stmt.executeQuery(selectAll);

  while (rs.next()){
    System.out.println(rs.getString("artist"));
    System.out.println(rs.getString("album"));
    System.out.println(rs.getString("title"));

    String rs_artist = rs.getString("artist");
    String rs_album = rs.getString("album");
    String rs_title = rs.getString("title");
 
    artist.add(rs_artist);
    album.add(rs_album);
    title.add(rs_title);
  }
}catch(SQLException sqle){
  sqle.getMessage();
  sqle.printStackTrace();
}


Output:

db Connected...

A-ha
East of the Sun West of the Moon
The Way We Talk
java.sql.SQLException: No data found
        at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7060)
        at sun.jdbc.odbc.JdbcOdbc.SQLGetDataString(JdbcOdbc.java:3862)
        at sun.jdbc.odbc.JdbcOdbcResultSet.getDataString(JdbcOdbcResultSet.java:5561)
        at sun.jdbc.odbc.JdbcOdbcResultSet.getString(JdbcOdbcResultSet.java:338)
        at sun.jdbc.odbc.JdbcOdbcResultSet.getObject(JdbcOdbcResultSet.java:1661)
        at sun.jdbc.odbc.JdbcOdbcResultSet.getObject(JdbcOdbcResultSet.java:1726)
        at Database.getAll(Database.java:52)
        at testDB.main(testDB.java:8)
Exception in thread "main" java.lang.NullPointerException
        at Database.getAll(Database.java:64)
        at testDB.main(testDB.java:8)

Som I kan se så virker det fint når jeg laver en System.out.println, men lige så snart jeg når til næste linje så får jeg en exception??? Jeg har prøvet uden System.out.println sætningerne, og så får jeg bare en NullPointerException...

Nogle ideer ?

Mvh,

Daniel
Avatar billede arne_v Ekspert
12. juli 2004 - 15:28 #1
Nogen JDBC drivere bryder sig ikke om at man henter de samme data igen.

Så prøv:

    String rs_artist = rs.getString("artist");
    String rs_album = rs.getString("album");
    String rs_title = rs.getString("title");

    System.out.println(rs_artist);
    System.out.println(rs_album);
    System.out.println(rs_title);
Avatar billede arne_v Ekspert
12. juli 2004 - 15:29 #2
Og led så efter null pointer exception.

Mit gæt er at artist, album eller title er null.
Avatar billede delley Nybegynder
12. juli 2004 - 15:32 #3
Tak for dit svar, men som jeg har skrevet - så har jeg prøvet uden System.out.println.

Jeg ved at der er noget i alle felterne, da jeg lige nu bruger en test database men kun en række i tabelen "music".

andre ideer?

mvh,

Daniel
Avatar billede arne_v Ekspert
12. juli 2004 - 15:42 #4
Jeg har læst hvad du har skrevet. Og mit forslag passer med det du beskriver.
Avatar billede delley Nybegynder
12. juli 2004 - 15:48 #5
Jep - men det virker ikke...

Der burde nemlig ikke komme en NullPointerExcpetion, da der jo kun er en række i ResultSet og som min System.out.println sætning beviser så kan den godt hentes uden problemmer...
Avatar billede arne_v Ekspert
12. juli 2004 - 15:52 #6
artist.add(rs_artist);

Jeg snakker om at artist er null ikke om at rs_artist er null !
Avatar billede delley Nybegynder
12. juli 2004 - 15:56 #7
he he - du har sgu' ret....glemte helt et initialisere mine Vectorer - DOH!!!

ingen fyraftens øl til mig :(

Tak!

Læg et svar og du vil blive belønnet :)
Avatar billede arne_v Ekspert
12. juli 2004 - 16:06 #8
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester