G
Guest
Gast
Hallo.
Vorweg muss ich gestehen, dass ich sonst immer nur mitgelesen habe was hier so Abging und mir das schon immer sehr geholfen hat. Jetzt komme ich aber in der Tat nicht weiter und ich musste mich mal registrieren um diese Frage hier zu stellen.
Ich habe ein Problem, dass ich immer eine Null-Pointer-Exception bekomme wenn ich Daten aus einem SQL-Query gespeichert in einem ResultSet in eine StringListe eintragen will.
Folgendes:
Ich habe zwei PreparedStatement:
stmtAuthor = conn.prepareStatement("insert into researcher (name) values (?);");
stmtSelectAuthor = conn.prepareStatement("select * from researcher where name = (?) group by name");
Das erste fügt einen Eintrag hinzu und das zweite prüft, ob ein String schon enthalten ist.
Jetzt das eigentliche Problem - hier der Code:
Dort passiert folgendes: (sollte zumindest)
Prüfen ob das Statement was zurückliefert. Falls ja ist der Author schon in der Datenbank und ich will den Namen nur in einer String-Liste abspeichern, damit ich später drauf zurückgreifen kann, da ein Buch mehrere Autoren haben kann.
Falls der Author noch nicht drin ist wird dieser hinzugefügt und anschließend nochmal geprüft ob dieser nun auch drin ist und in das ResultSet geschrieben. (Ich brauche die ID von dem Eintrag) Anschließend will ich den Wert dann auch in die Liste schreiben und da ist der Fehler.
Ich bekomme immer eine NullPointerException am Punkt: authors_id[au_i] = rsAuthor.getString(1);
Ich weiß leider keinen Rat mehr. Ich bitte um Eure Hilfe.
Danke schon einmal
Vorweg muss ich gestehen, dass ich sonst immer nur mitgelesen habe was hier so Abging und mir das schon immer sehr geholfen hat. Jetzt komme ich aber in der Tat nicht weiter und ich musste mich mal registrieren um diese Frage hier zu stellen.
Ich habe ein Problem, dass ich immer eine Null-Pointer-Exception bekomme wenn ich Daten aus einem SQL-Query gespeichert in einem ResultSet in eine StringListe eintragen will.
Folgendes:
Ich habe zwei PreparedStatement:
stmtAuthor = conn.prepareStatement("insert into researcher (name) values (?);");
stmtSelectAuthor = conn.prepareStatement("select * from researcher where name = (?) group by name");
Das erste fügt einen Eintrag hinzu und das zweite prüft, ob ein String schon enthalten ist.
Jetzt das eigentliche Problem - hier der Code:
Code:
try {
//Pruefen ob schon in der Datenbank vorhanden
stmtSelectAuthor.setString(1, toAdd);
rsTest = stmtSelectAuthor.executeQuery();
if (rsTest.next()) {
//falls ja dann nur den namen fuer das erstellen der Relationen in der Liste speichern
rsTest.next();
authors_id[au_i] = rsTest.getString(1);
au_i++;
}
else {
//falls nein dann die Daten in die Datenbank schreiben
rsTest.next();
stmtAuthor.setString(1, toAdd);
stmtAuthor.executeUpdate();
//und wieder auslesen um die ID zu bekommen
stmtSelectAuthor.setString(1, toAdd);
rsAuthor = stmtSelectAuthor.executeQuery();
rsAuthor.next();
//diese ID dann in die Liste speichern fuer die Erstellung der Relationen
authors_id[au_i] = rsAuthor.getString(1);
au_i++;
}
Dort passiert folgendes: (sollte zumindest)
Prüfen ob das Statement was zurückliefert. Falls ja ist der Author schon in der Datenbank und ich will den Namen nur in einer String-Liste abspeichern, damit ich später drauf zurückgreifen kann, da ein Buch mehrere Autoren haben kann.
Falls der Author noch nicht drin ist wird dieser hinzugefügt und anschließend nochmal geprüft ob dieser nun auch drin ist und in das ResultSet geschrieben. (Ich brauche die ID von dem Eintrag) Anschließend will ich den Wert dann auch in die Liste schreiben und da ist der Fehler.
Ich bekomme immer eine NullPointerException am Punkt: authors_id[au_i] = rsAuthor.getString(1);
Ich weiß leider keinen Rat mehr. Ich bitte um Eure Hilfe.
Danke schon einmal