Hallo zusammen,
ich sammele gerade erste Erfahrung mit JDBC und versuche eine Tabelle zu erzeugen sowie anschließend daraus zu lesen.
Das letztere funktioniert leider nicht und ich verstehe nach längerem grübeln und googeln nicht warum...
Es passiert letztlich nichts und ich der Fehler muss meiner Ansicht nach in den beiden Zeilen liegen:
Wenn ich versuche irgendetwas aus "ergebnis" zu lesen beispielsweise mit
bekomme ich, dass hier um die Ohren gehauen: java.sql.SQLException: Ungültiger Cursorstatus; keine aktuelle Zeile.
Kann hier evtl. jemand helfen?
ich sammele gerade erste Erfahrung mit JDBC und versuche eine Tabelle zu erzeugen sowie anschließend daraus zu lesen.
Das letztere funktioniert leider nicht und ich verstehe nach längerem grübeln und googeln nicht warum...
Es passiert letztlich nichts und ich der Fehler muss meiner Ansicht nach in den beiden Zeilen liegen:
Java:
Statement abfrageAnweisung = verbindung.createStatement();
ResultSet ergebnis = abfrageAnweisung.executeQuery("SELECT * FROM UNSERE_HELDEN");
Wenn ich versuche irgendetwas aus "ergebnis" zu lesen beispielsweise mit
Java:
System.out.println(ergebnis.getString(0));
bekomme ich, dass hier um die Ohren gehauen: java.sql.SQLException: Ungültiger Cursorstatus; keine aktuelle Zeile.
Kann hier evtl. jemand helfen?
Java:
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Main {
private final static String ERSTELLE_TABELLE_ANWEISUNG = "CREATE TABLE UNSERE_HELDEN ("
+ "ID INT NOT NULL GENERATED BY DEFAULT AS IDENTITY, " + "NAME VARCHAR(32), " + "KLASSE VARCHAR(32),"
+ "CHARISMA INT, " + "STARKE INT," + "AUSDAUER INT," + "ERFAHRUNG INT, " + "PRIMARY KEY (ID) " + ")";
private static Connection erstelleVerbindung() throws ClassNotFoundException, SQLException {
Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
Connection verbindung = DriverManager.getConnection("jdbc:derby:d:datenbanken/helden;create=true");
return verbindung;
}
public static void main(String[] args) {
try (Connection verbindung = erstelleVerbindung()) {
DatabaseMetaData metaDaten = verbindung.getMetaData();
ResultSet tabellen = metaDaten.getTables(null, "APP", "UNSERE_HELDEN", null);
if (!tabellen.next()) {
Statement anweisung = verbindung.createStatement();
anweisung.executeUpdate(ERSTELLE_TABELLE_ANWEISUNG);
Statement einfuegeAnweisung = verbindung.createStatement();
einfuegeAnweisung.executeUpdate(
"INSERT INTO UNSERE_HELDEN ( NAME, KLASSE, CHARISMA, STAERKE, AUSDAUER, ERFAHRUNG) "
+ "VALUES ('SchroeDanger', 'Zwergenkrieger', 11, 11, 11, 200)");
einfuegeAnweisung.executeUpdate(
"INSERT INTO UNSERE_HELDEN ( NAME, KLASSE, CHARISMA, STAERKE, AUSDAUER, ERFAHRUNG) "
+ "VALUES ('Artur', 'Nachtelf', 11, 11, 11, 200)");
einfuegeAnweisung.close();
anweisung.close();
}
Statement abfrageAnweisung = verbindung.createStatement();
ResultSet ergebnis = abfrageAnweisung.executeQuery("SELECT ID FROM UNSERE_HELDEN");
while (ergebnis.next()) {
String id = ergebnis.getString("ID");
String name = ergebnis.getString("NAME");
String klasse = ergebnis.getString("KLASSE");
int charisma = ergebnis.getInt("CHARISMA");
int staerke = ergebnis.getInt("STAERKE");
int ausdauer = ergebnis.getInt("AUSDAUER");
int erfahrung = ergebnis.getInt("ERFAHRUNG");
System.out.println("ID: " + id);
System.out.println("Name: " + name);
}
abfrageAnweisung.close();
ergebnis.close();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}