03. maj 2002 - 16:19
Der er
3 kommentarer og
1 løsning
NullPointerException
Når jeg compiler denne kode: try{
String query = "SELECT * FROM GUEST;";
rs = state.executeQuery(query);
}
catch (SQLException fejl3) {
System.err.println ("Kunne ikke laese data fra dababasen\nFejlen er: ");
}
Kommer der en NullPointerException frem...
Efter progremmet er compilet med CTRL+1 og når jeg så skal se "resultatet"
Hvad kan det skyldes?
Kan du ikke lige poste dit stacktrace - så kan vi bedre se hvad der går galt.
Evt. også lidt mere af din kode. Jeg kan f.eks. ikke se om state er null når du prøver at kalde en metode på den. (hvilket vil give NullPointer).
ved ikke lige hvad stacktrace er men her har du koden...
import java.util.*;
import java.sql.*;
class basetest {
ResultSet rs;
Statement state;
basetest(){
try{
databaseForbindelse();
}
catch (ClassNotFoundException fejl1){
System.out.println("narkoman");
}
try{
String query = "SELECT * FROM GUEST;";
rs = state.executeQuery(query);
}
catch (SQLException fejl3) {
System.err.println ("Kunne ikke laese data fra dababasen\nFejlen er: ");
}
//DatabaseMetaData dbMeta = conn.getMetaData();
//System.out.println(dbMeta);
//}
//catch(SQLException q){
// System.out.println(q);
//}
try {
ResultSetMetaData rsMeta = rs.getMetaData();
int j = rsMeta.getColumnCount();
System.out.println(j);
//for(int i=0;i<2;i++){
// rs.next();
// String s = rs.getString(1);
// String t = rs.getString(2);
// String u = rs.getString(3);
// String v = rs.getString(4);
// String x = rs.getString(5);
// String y = rs.getString(6);
// System.out.println(s + " " + t + " " + u + " " + v + " " + x + " " +y);
// }
//rs.next();
// String x = rs.getString(1);
// String c = rs.getString(2);
// System.out.println(x + " " + c);
}
catch (SQLException fejl3) {
System.err.println ("Kunne ikke laese data fra dababasen\nFejlen er: "+
fejl3);
}
}
void databaseForbindelse()throws ClassNotFoundException{
//Initialiserer databasen
String username = "sysdba";
String password = "masterkey";
String protokol = "jdbc:interbase";
String server = "localhost";
String placering = "c:/database/hoteladm.gdb";
String driver = "interbase.interclient.Driver";
String databaseURL = protokol + "://" + server + "/" + placering;
try{
Class.forName(driver);
Connection dbconn = DriverManager.getConnection (databaseURL, username, password);
Statement state = dbconn.createStatement();
}
catch(SQLException q){
System.out.println(q);
}
}
public static void main (String [] args){
new basetest();
}
}
du deklarerer en lokal variabel nede i din 'databaseForbindelse' metode med samme navn som din globale (state). Bytt ut denne linje:
Statement state = dbconn.createStatement();
med denne:
state = dbconn.createStatement();
så skal det nok fungere
Jeg må bøje mig i støvet ooooh mester, mange tak nu skal jeg bare finde ud af at give dig point....
Kurser inden for grundlæggende programmering