Java NullPointerException

Status
Nicht offen für weitere Antworten.

alaska94

Aktives Mitglied
Hallo,

ich versuche mich gerade an Java und Datenbanken.

Ich habe folgende zwei Klassen geschrieben.

Code:
import java.sql.ResultSet;
import java.sql.SQLException;

public class Ausgaben {

	/**
	 * @param args
	 * @throws SQLException 
	 */
	public static void main(String[] args) throws SQLException {
		// TODO Auto-generated method stub
		Datenbank db=new Datenbank();
		ResultSet result;
		db.verbinden();
		result=db.auslesen("Select * from benutzer");
		System.out.println(result.getString(1));
	}

}

Code:
import java.sql.*;

public class Datenbank {

	private Connection con;
	private Statement stm;
	private String treiber="jdbc:mysql://localhost/user";
	private String user="root";
	private String pwd="";
	private ResultSet result;

	public void verbinden(){
		try
	    {
	      Class.forName("com.mysql.jdbc.Driver");
	    }
	    catch ( ClassNotFoundException e )
	    {
	      System.err.println( "Keine Treiber-Klasse!" );
	      return;
	    }
	    try {
			con=DriverManager.getConnection(treiber,user,pwd);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	public ResultSet auslesen(String sql){
		
		try {
			result=stm.executeQuery(sql);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return result;
	}
	
	
	
}

Beim Ausführen erhalte ich folgende Meldung


  • Exception in thread "main" java.lang.NullPointerException
    at Datenbank.auslesen(Datenbank.java:33)
    at Ausgaben.main(Ausgaben.java:15)

Wer kann mir hier weiterhelfen?
 

foobar

Top Contributor
Dein Statement ist null, ist doch klar daß das knallt.
http://java.sun.com/j2se/1.3/docs/api/java/sql/Connection.html#createStatement()

Code:
public ResultSet auslesen(String sql){
      stmt = con.createStatement();
      try {
         result=smt.executeQuery(sql);
      } catch (SQLException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
      }
      return result;
   }
 

SnooP

Top Contributor
du hast von der Klasse Statement kein Objekt erstellt... stm ist demnach null ... wenn man darauf ne Methode aufrufen will: stm.executeQuery sprich null.executeQuery geht das nicht, weil null numal nix mit executeQuery kann ;) - dies führt zu einer allseits beliebten NullPointerException.
Sprich du musst vorher dafür sorgen, dass nen Statement Objekt erstellt wird (new Statement...) oder vielmehr createStatement Methode von Connection aufrufen...

edit: mist ;) - zu spät
 

alaska94

Aktives Mitglied
Jetzt gibt er mir die Daten leider nicht aus.
Meine meine Klassen wie folgt umgeändert.


Code:
import java.sql.*;

public class Datenbank {

	private Connection con;
	private Statement stm;
	private String treiber="jdbc:mysql://localhost/user";
	private String user="root";
	private String pwd="";
	private ResultSet result;

	public void verbinden(){
		try
	    {
	      Class.forName("com.mysql.jdbc.Driver");
	      
	    }
	    catch ( ClassNotFoundException e )
	    {
	      System.err.println( "Keine Treiber-Klasse!" );
	      return;
	    }
	    try {
	    	con=DriverManager.getConnection(treiber,user,pwd);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			System.err.println(e.getSQLState());
			System.err.println(e.getErrorCode());
		}
	}
	
	public ResultSet auslesen(String sql) {
	      try {
			stm = con.createStatement();
		} catch (SQLException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
			System.err.println(e1.getSQLState());
		    System.err.println(e1.getErrorCode());
		}
	      try {
	         result=stm.executeQuery(sql);
	      } catch (SQLException e) {
	         // TODO Auto-generated catch block
	         e.printStackTrace();
	         System.err.println(e.getSQLState());
			 System.err.println(e.getErrorCode());
	      }
	     
	     return result;
	    } 
	
	
	
}

Code:
import java.sql.ResultSet;
import java.sql.SQLException;

public class Ausgaben {

	/**
	 * @param args
	 * @throws SQLException 
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Datenbank db=new Datenbank();
		String abfrage="Select * from benutzer";
		ResultSet result;
		db.verbinden();
		result=db.auslesen(abfrage);
		try {
			System.out.println(result.getString(2));
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			System.err.println("Sqlstate= "+e.getSQLState());
			System.err.println(e.getErrorCode());
		}
		try {
			result.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}

Folgende Fehlermeldung erhalte ich.

java.sql.SQLException: Before start of result set
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:910)
at com.mysql.jdbc.ResultSet.checkRowPos(ResultSet.java:692)
at com.mysql.jdbc.ResultSet.getStringInternal(ResultSet.java:5487)
at com.mysql.jdbc.ResultSet.getString(ResultSet.java:5431)
at Ausgaben.main(Ausgaben.java:18)
S1000
0
Was habe ich nun schon wieder falsch gemacht :-(
 

RaoulDuke

Bekanntes Mitglied
Ein next() auf das ResultSet musst du noch machen damit du auf dem ersten Datensatz stehst.

Sagt die SQLException ja auch: "Before start of result set"

Mach es so:

Code:
if (result.next()){
    System.out.println(result.getString(2)); 
    }
else{
    System.out.println("Keine Daten gefunden"); 
}

Oder wenn du mehr als nur die erste Zeile willst:

Code:
while(result.next()){
    System.out.println("Feld1: "+result.getString(1)); 
    System.out.println("Feld2: "+result.getString(2)); 
}

Das gibt dann alle gefundenen Zeilen aus. Bzw jeweils deren ersten beiden Felder.
 

RaoulDuke

Bekanntes Mitglied
Ausserdem nutzt dir folgendes nur begrenzt:

Code:
try
       {
         Class.forName("com.mysql.jdbc.Driver");
        
       }
       catch ( ClassNotFoundException e )
       {
         System.err.println( "Keine Treiber-Klasse!" );
         return;
       }

Da du nirgendwo prüfst ob die db.verbinden() funktioniert hat. Das bringt dir eigentlich nur das du eine Ausgabe bekommst, und dann hinterher auf eine weitere Exception läufst wenn du auslesen() aufrufst. Die wird dann zwar auch abgefangen, aber dann ist dein ResultSet nicht definiert und du bekommst beim result.next() eine NullPointerException.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Java NullPointerException Java Basics - Anfänger-Themen 4
F Fehlermeldung java.lang.NullPointerException Java Basics - Anfänger-Themen 4
D java.lang.NullPointerException Java Basics - Anfänger-Themen 19
X java.lang.NullPointerException fehler ? Java Basics - Anfänger-Themen 1
B java.lang.NullPointerException bei javafx Java Basics - Anfänger-Themen 10
R Exception in thread "main" java.lang.NullPointerException Java Basics - Anfänger-Themen 10
H java.lang.NullPointerException Java Basics - Anfänger-Themen 4
G java.lang.NullPointerException Java Basics - Anfänger-Themen 3
E Compiler-Fehler java.lang.NullPointerException Java Basics - Anfänger-Themen 2
J java.lang.NullPointerException in meiner JavaFXControllerKlasse Java Basics - Anfänger-Themen 26
D Communications link failure | java.lang.NullPointerException Java Basics - Anfänger-Themen 3
F java.lang.NullPointerException, kann aber nicht sein! Java Basics - Anfänger-Themen 4
D Java Fehler: NullPointerException Java Basics - Anfänger-Themen 1
M Compiler-Fehler Java suckt - java.lang.NullPointerException Java Basics - Anfänger-Themen 12
L Compiler-Fehler Exception in thread "main" java.lang.NullPointerException Java Basics - Anfänger-Themen 2
S java.lang.NullPointerException Java Basics - Anfänger-Themen 4
G Compiler-Fehler java.lang.NullPointerException Java Basics - Anfänger-Themen 4
A Compiler-Fehler Exception in thread "main" java.lang.NullPointerException Java Basics - Anfänger-Themen 7
P Interpreter-Fehler java.lang.NullPointerException Java Basics - Anfänger-Themen 3
T Problem mit Eclipse? Exception in thread "main" java.lang.NullPointerException Java Basics - Anfänger-Themen 4
S Fehler: "java.lang.NullPointerException" Java Basics - Anfänger-Themen 6
I Erste Schritte Ausführfehler: java.lang.NullPointerException Java Basics - Anfänger-Themen 3
1 Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException Java Basics - Anfänger-Themen 5
S Exception in thread "main" java.lang.NullPointerException Java Basics - Anfänger-Themen 11
V [Greenfoot] java.lang.NullPointerException Java Basics - Anfänger-Themen 12
S Compiler-Fehler java.lang.NullPointerException Java Basics - Anfänger-Themen 10
C NullPointerException > java.nio.BufferUnderflowException Java Basics - Anfänger-Themen 14
J java.lang.NullPointerException Java Basics - Anfänger-Themen 18
K Interpreter-Fehler java.lang.NullPointerException Java Basics - Anfänger-Themen 6
K OOP java.lang.NullPointerException Java Basics - Anfänger-Themen 2
B Exception in thread "main" java.lang.NullPointerException Fehler Hilfe! Java Basics - Anfänger-Themen 4
S Fehlermeldung: java.lang.NullPointerException Java Basics - Anfänger-Themen 10
A Exception in thread "main" java.lang.NullPointerException Java Basics - Anfänger-Themen 16
K java.lang.NullPointerException in Array bei Arraylistübergabe Java Basics - Anfänger-Themen 7
G java.lang.NullPointerException Was tun? Java Basics - Anfänger-Themen 7
J java.lang.NullPointerException . Java Basics - Anfänger-Themen 5
G java.lang.NullPointerException Java Basics - Anfänger-Themen 2
S java.lang.NullPointerException - Bitte helft mir! Java Basics - Anfänger-Themen 5
S java.lang.NullPointerException Fehler bei Umrechnung Java Basics - Anfänger-Themen 3
P java.lang.NullPointerException Java Basics - Anfänger-Themen 19
M java.lang.NullPointerException at . Java Basics - Anfänger-Themen 4
S java.lang.nullpointerexception bei arrayübergabe Java Basics - Anfänger-Themen 30
S java.lang.NullPointerException bei Bildern Java Basics - Anfänger-Themen 13
P java.lang.NullPointerException was ist das? Java Basics - Anfänger-Themen 7
G java.lang.NullPointerException beim objekt Java Basics - Anfänger-Themen 3
H .java Dateien in Eclipse einbinden und ausführen Java Basics - Anfänger-Themen 1
onlyxlia Schlüsselworte Was meint man mit "einen Typ" in Java erstellen? Java Basics - Anfänger-Themen 2
O Java Kara geschweifte Klammern Java Basics - Anfänger-Themen 2
richis-fragen Mausrad logitech kann links und rechts klick wie in java abragen. Java Basics - Anfänger-Themen 15
XWing Java Klssenproblem Java Basics - Anfänger-Themen 4
R Umgebungsvariable java -cp gibt immer Java-Hilfe... Java Basics - Anfänger-Themen 3
farbenlos Csv Datei in Java einlesen Java Basics - Anfänger-Themen 18
F TableModelListener: java.lang.ArrayIndexOutOfBoundsException: 132 Java Basics - Anfänger-Themen 3
G Java 8 - Support-Ende Java Basics - Anfänger-Themen 7
T Java Weihnachtsbaum + Rahmen Java Basics - Anfänger-Themen 1
N Will mit Java anfangen Java Basics - Anfänger-Themen 13
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
M Java Iterator Verständnisfrage Java Basics - Anfänger-Themen 6
M Java Mail Programm Java Basics - Anfänger-Themen 4
Sniper1000 Java 391 für Windows Java Basics - Anfänger-Themen 37
J Java long- in int-Variable umwandeln Java Basics - Anfänger-Themen 6
JaZuDemNo Java im Studium Java Basics - Anfänger-Themen 7
E Java Programm zur anzeige, ob Winter- oder Sommerzeit herrscht Java Basics - Anfänger-Themen 62
I QR code in Java selber generieren Java Basics - Anfänger-Themen 5
V Java-Ausnahmebehandlung: Behandlung geprüfter Ausnahmen Java Basics - Anfänger-Themen 1
krgewb Java Streams Java Basics - Anfänger-Themen 10
A Überwältigt von der komplexen Java Welt Java Basics - Anfänger-Themen 29
O Mehrfachvererbung auf Spezifikations- und Implementierungsebene in Java. Interfaces Java Basics - Anfänger-Themen 19
John_Sace Homogene Realisierung von Generics in Java ? Java Basics - Anfänger-Themen 19
P Meldung aus Java-Klasse in Thread an aufrufende Klasse Java Basics - Anfänger-Themen 1
R mit Java API arbeiten Java Basics - Anfänger-Themen 9
P JDK installieren Probleme bei der Java-Installation Java Basics - Anfänger-Themen 8
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
Timo12345 JNLP File mit Java öffnen Java Basics - Anfänger-Themen 2
S Video Editierung mit Java.._ Java Basics - Anfänger-Themen 2
F Einstelungen in Java - CursorBlinkRate Java Basics - Anfänger-Themen 10
A PHP $_POST["name"] in Java Java Basics - Anfänger-Themen 3
vivansai21 Is there a oneliner to create a SortedSet filled with one or multiple elements in Java? Java Basics - Anfänger-Themen 9
Athro-Hiro Weißes Bild in Java erstellen Java Basics - Anfänger-Themen 3
Arjunreddy Can someone please tell me how to use a debugger in BlueJ(a Java environment) Java Basics - Anfänger-Themen 1
M Java assoziationen (UML) Java Basics - Anfänger-Themen 8
H Excel-Tabellen mit Java erstellen Java Basics - Anfänger-Themen 4
Simon16 Java ArrayListe von einer Klasse sortieren Java Basics - Anfänger-Themen 2
P Wie kann ich in meinem Java Programm etwas dauerhaft speichern? Java Basics - Anfänger-Themen 5
H Nutzt Eclipse alle CPU-Threads beim Ausführen von Java-Programmen? Java Basics - Anfänger-Themen 4
xXGrowGuruXx Java einstieg, leichte sache 0 verstanden Java Basics - Anfänger-Themen 7
A java.sql.SQLException: Data type mismatch. Java Basics - Anfänger-Themen 1
H Java-Programm zur Ausgabe von Zuständen Java Basics - Anfänger-Themen 80
N Java Spiel Figur auf dem Hintergrundbild bewegen. Java Basics - Anfänger-Themen 11
G Kann Java-Programm nicht als jar aufrufen, auch als EXE nicht Java Basics - Anfänger-Themen 19
N Java Taschenrechner hat Jemand vlt einen Tipp dafür wie ich jetzt die buttons verbinden kann und das Ergebnis auf dem textfield anzeigen lassen kann Java Basics - Anfänger-Themen 13
A Lerngruppe Java Java Basics - Anfänger-Themen 2
G Help me in the Java Program Java Basics - Anfänger-Themen 2
L Java- Vererbung Java Basics - Anfänger-Themen 4
LimDul Suche Java Stream Tutorial Java Basics - Anfänger-Themen 2
_so_far_away_ Ich möchte Java lernen Java Basics - Anfänger-Themen 11
benny1993 Java Programm erstellen für ein Fußball-Turnier Java Basics - Anfänger-Themen 3
M Datentypen While-Schleife eine Java Methode erstellen Java Basics - Anfänger-Themen 3
V Bild per Java Script austauschen Java Basics - Anfänger-Themen 7
MoxMorris this Keyword in Java Java Basics - Anfänger-Themen 14

Ähnliche Java Themen

Neue Themen


Oben