MySQL Probleme mit resultSet executQuery

ZxSpectrum

Mitglied
Hallo zusammen,
vor kurzem habe ich mich einem kleinem Game-Developement Projekt angeschloßen und habe angefangen ein wenig mit Datenbanken zu spielen. Leider stecke ich erst mal an einer Stelle und komme nicht wirklich weiter, vielleicht könnt ihr mir mit einem Rat helfen.

Und zwar, ich versuche mit JDBC ein Table in MySQL zu erzeugen. Habe einiges im Internet rechechiert
Meine Quellen:
https://docs.oracle.com/javase/tutorial/jdbc/basics/connecting.html
www.tutorialspoint.com/jdbc/jdbc-sample-code.htm
Rheinwerk Computing :: Java ist auch eine Insel – 24.7 Elemente einer Datenbank hinzufügen und aktualisieren

Jedoch in der Zeile 41 bricht das Programm zusammen und kommt folgende Fehlermeldung:
Java:
java.sql.SQLException: Can not issue data manipulation statements with executeQuery().
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:998)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:937)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:872)
    at com.mysql.jdbc.StatementImpl.checkForDml(StatementImpl.java:472)
    at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1401)
    at conn.ConnectClass.main(ConnectClass.java:41)

Ich habe die Vermutung, dass es ein Syntaxfehler in der CREATE TABLE Anweisung ist, aber vielleicht habe ich etwas übersehen.

Hier füge ich mein gesamtes Quellcode.

[SIZE=+1]
Java:
package conn;
package conn;

import java.sql.*;
import java.util.*;

public class ConnectClass 
{
    //JDBC driver name and database URL
    static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
    static final String DB_URL = "jdbc:mysql://localhost/test";

    //Database credentials
    static final String USER = "root";
    static final String PASS = "secret";

    public static void main(String[] args) 
    {
        Scanner sc = new Scanner(System.in);
        
        System.out.println("Insert your character name: ");

        String tableName = sc.nextLine();
        String autoincrement = "AUTO_INCREMENT";
        Connection conn = null;
        Statement stmt = null;

        try {
            //register JDBC driver
            Class.forName(JDBC_DRIVER);

            //open a connection
            System.out.println("connects...");
            conn=DriverManager.getConnection(DB_URL,USER,PASS);
            System.out.println("Succeeded");
            //Execute a query
            System.out.println("Creating Statement");
            stmt = conn.createStatement();
            String sql;

            sql = "CREATE TABLE "+ tableName + " (ID INTEGER PRIMARY KEY " + autoincrement + ", Str INT(30), " + ", Ag INT(30), " +  "End INT(30));";
            ResultSet rs = stmt.executeQuery(sql);

            //fill table
            System.out.println("Str: ");
            int str = sc.nextInt();
            System.out.println("Agil: ");
            int ag = sc.nextInt();
            System.out.println("Endurance: ");
            int end = sc.nextInt();

            PreparedStatement stmt2 = conn.prepareStatement( "INSERT INTO " + tableName + " (Str, Ag, End) " + " VALUES ( ?, ?, ? );" );
            stmt2.setInt( 1, str );
            stmt2.setInt( 2, ag );
            stmt2.setInt( 2, end );
            stmt2.execute();

            //extract data from result set
            while(rs.next()){
                int id        = rs.getInt("id");
                str            = rs.getInt("Str");
                ag            = rs.getInt("Ag");
                end            = rs.getInt("End");

                //display values
                System.out.println("ID: "            + id);
                System.out.println("Sila: "         + str);
                System.out.println("Zrecznosc: "    + ag);
                System.out.println("Wytrzymalosc: " + end);

            }//while(rs.next())

            //clean environments
            rs.close();
            stmt.close();
            stmt2.close();
            conn.close();
            System.out.println("Connection closed");

        } catch (SQLException sqle) {
            //Handle errors for JDBC
            sqle.printStackTrace();
        } catch (Exception e){
            //Handle errors for Class.forName
            e.printStackTrace();
        } finally {
            //finally block used to close resources
            try {
                if (stmt != null){
                    stmt.close();
                }//if
            } catch (SQLException sqle2) {
            }//catch
            try {
                if (conn != null){
                    conn.close();
                }//if
            } catch (SQLException sqle) {
                sqle.printStackTrace();
            }//catch
        }//finally
    
    }//main
}//public class ConnectClass

Vielen Dank für eure Hilfe im Voraus!

Grüße
ZxSpectrum

[/SIZE]
 

fehlerfinder

Bekanntes Mitglied
Java:
java.sql.SQLException: Can not issue data manipulation statements with executeQuery().

Ich habe die Vermutung, dass es ein Syntaxfehler in der CREATE TABLE Anweisung ist, aber vielleicht habe ich etwas übersehen.

Ein guter Anhaltspunkt bei der Fehlersuche ist meist, die Fehlermeldung aufmerksam zu lesen, wobei ich zugeben muss, dass diese nicht sooo arg eindeutig ist, aber der Reihe nach:

Laut Fehlermeldung hast du ein Problem beim Ausführen von executeQuery - diese Methode kann offensichtlich für das was du vor hast nicht verwendet werden. An dieser Stelle ist ein Blick in die API-Dokumentation unerlässlich. Dort ist dann recht schnell die folgende Information zu finden:

executeQuery: Executes the given SQL statement, which returns a single ResultSet object.

Das Anlegen einer Tabelle gibt mit Sicherheit kein ResultSet zurück - das gibt es nur bei einem SELECT-Statement.

Also brauchst du, wie Dompteur ja auch schon kurz und knackig beschrieben hat, ein anderes Statement. Da wiederum ist dann die API-Doku erneut hilfreich, denn wo, wenn nicht dort, willst du Infos zum zu verwendenden Statement finden. Direkt im Anschluss an executeQuery gibt es die Erklärung zu

executeUpdate: Executes the given SQL statement, which may be an INSERT, UPDATE, or DELETE statement or an SQL statement that returns nothing, such as an SQL DDL statement.

Und "such as an SQL DDL statement" ist genau das, was du willst.

(Und auch wenn die Fehlermeldung dir nur sagt, dass du keine "data manipulation statement"s ausführen kannst, was du natürlich auch gar nicht tust, bringt dich die o.g. Fehlersuche weiter.)

Und als letzten Tipp: Eingabe von "cannot issue data manipulation statements with executequery" bei einer Suchmaschine deiner Wahl hilft auch ENORM weiter ;-)
 

ZxSpectrum

Mitglied
Ach, habe gestern vergessen zu antworten. Das mit executeUpdate hat wunderbar funktioniert. Danke Dompteur für den Tipp. Und auch einen Dank an fehlerfinder, dein Beitrag hat mir an einigen Stellen klarheit verschaffen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Probleme mit java.sql.SQLException: ResultSet closed Datenbankprogrammierung 21
A Probleme mit ResultSet und getString(i) Datenbankprogrammierung 13
N Probleme mit "nur vorwärts gerichtete ResultSet" Datenbankprogrammierung 7
TH260199 Java-Programm. Probleme bei der Umsetzung von einer Kontaktverwaltung. Datenbankprogrammierung 7
Zrebna Probleme bei Überführung von SQL-Code in eine HQL-Abfrage Datenbankprogrammierung 3
Kirby.exe Probleme mit docker-compose.yml Datenbankprogrammierung 4
B Probleme mit Datenbankverbindung Datenbankprogrammierung 2
N java SQL JAR - Probleme Datenbankprogrammierung 18
S probleme mit dem jdbc treiber Datenbankprogrammierung 1
T Oracle Probleme bei getTableName Datenbankprogrammierung 8
D Probleme bei Einsteiger Aufgabe SQL Datenbankprogrammierung 2
M JAVA Derby INSERT probleme Datenbankprogrammierung 12
H Probleme mit Unicodedarstellung in Derby DB Datenbankprogrammierung 1
M MySQL probleme beim "Generate Tables from Entities" Datenbankprogrammierung 9
L Probleme mit DriverManager.getConnection(..) - Endlosschleife, Java Absturz, Keine Exception Datenbankprogrammierung 4
S Derby/JavaDB Probleme beim anlegen einer embedded DB Datenbankprogrammierung 13
P Probleme mit meinem 1. Hibernate Beispiel Datenbankprogrammierung 3
W Probleme mit AND und OR Datenbankprogrammierung 5
D DB Tabelle in JTable anzeigen - Probleme Datenbankprogrammierung 8
Gossi CallableStatement Probleme Datenbankprogrammierung 8
D Probleme bei der Erzeugung einer Tabelle Datenbankprogrammierung 15
L MySQL Probleme mit PreparedStatement für SQL-Abfrage in Java Datenbankprogrammierung 2
R Derby/JavaDB Insert Statement Probleme Datenbankprogrammierung 14
L Derby/JavaDB Derby macht Probleme Datenbankprogrammierung 4
B HSQLDB Probleme mit Select...Where Abfrage Datenbankprogrammierung 16
M Probleme mit Triggering Datenbankprogrammierung 2
F DB2 Probleme mit dem DriverManager Datenbankprogrammierung 4
S Derby/JavaDB OpenJPA, @oneToMany und Probleme Datenbankprogrammierung 2
I MySQL Probleme mit kyrillischen Zeichen Datenbankprogrammierung 2
A Derby/JavaDB Probleme beim Einbinden Datenbankprogrammierung 2
S Probleme mit INSERT Befehl Datenbankprogrammierung 11
R isLast() Probleme bei Pervasive Datenbankprogrammierung 5
S Probleme mit localhost Datenbankprogrammierung 14
M Oracle Probleme mit dem anbinden einer Oracle 10g Datenbank Datenbankprogrammierung 27
J MySQL Hibernate: Probleme beim Speichern von OneToMany - Datensätzen Datenbankprogrammierung 2
P Hibernate -> Probleme bei n:m-Relation und JUnit Datenbankprogrammierung 10
J Probleme mit Datenbankzeiger Datenbankprogrammierung 19
A Probleme mit auf DB2 Express zugreiffen Datenbankprogrammierung 6
N Probleme beim Aufruf aus der DB Datenbankprogrammierung 7
M Probleme bei Select in Schleife Datenbankprogrammierung 7
G Probleme mit Datenbankanbindung Datenbankprogrammierung 3
R Probleme mit Insert Datenbankprogrammierung 2
P Probleme mit Oracle Timestamp Datenbankprogrammierung 3
klattiator Hibernate - Probleme bei Konfiguration Datenbankprogrammierung 3
F Probleme mit entfernter DB und Hibernate Zeichensatz Datenbankprogrammierung 3
G Probleme mit der Schnittstelle H1bernate/Eclipse Datenbankprogrammierung 6
A Probleme mit Jar-File in ein Jar-File Datenbankprogrammierung 8
O Derby Performance Probleme? Datenbankprogrammierung 4
V Probleme beim Öffnen "einiger" SuperbaseTabellen p Datenbankprogrammierung 8
G Probleme beim Methodenaufruf einer EJB Datenbankprogrammierung 10
ARadauer hibernate probleme Datenbankprogrammierung 13
Y Probleme mit H2 und Primary Key Datenbankprogrammierung 4
D Probleme mit mysql-Connection Datenbankprogrammierung 10
G INNODB backup probleme Datenbankprogrammierung 2
S Probleme mit statement.close() Datenbankprogrammierung 10
A Probleme beim Schreiben in eine CSV-Datei aus einer H2-DB Datenbankprogrammierung 2
G Probleme mit Laden des JDBC-Treiber in HSQLDB Datenbankprogrammierung 2
T Probleme mit Date in H2 Datenbank Datenbankprogrammierung 2
4 Probleme mit Select abfrage Datenbankprogrammierung 4
N Probleme mit Access-DB bei einem Webserver Datenbankprogrammierung 5
T Diverse JDBC Probleme (inner join, rs.last(), update) Datenbankprogrammierung 2
R Probleme mit Datensätzen in MySql DB Datenbankprogrammierung 3
B Oracle Driver Probleme Datenbankprogrammierung 2
I Probleme bei MySQL - Replikation Datenbankprogrammierung 2
R Probleme mit ausführbarem Jar Archiv Datenbankprogrammierung 9
F Probleme mit Jar Datei Datenbankprogrammierung 3
S String probleme Datenbankprogrammierung 3
R Probleme mit der Verbindung zum localhost Datenbankprogrammierung 12
S Probleme bei der Installation von MySQL 5.0 Datenbankprogrammierung 4
G Probleme mit Access und Join Datenbankprogrammierung 3
M Daten von MySQL nach MSSql probleme beim schreiben Datenbankprogrammierung 3
S JDBC-Anfänger und Probleme beim Treiberfinden etc. Datenbankprogrammierung 4
T Probleme beim Verbindungsaufbau zum SQL 2000 Datenbankprogrammierung 2
G Probleme mit Datenbankeinträge Datenbankprogrammierung 4
G Probleme mit Treiber (connector) Datenbankprogrammierung 20
thE_29 getBytes() - russland/bulgarien -- andere Codecs Probleme Datenbankprogrammierung 8
E Probleme mit JDBC und Executable-Jar Datenbankprogrammierung 2
G Probleme mit MySQL - Anmeldung Datenbankprogrammierung 2
P Probleme mit NullPointerException Datenbankprogrammierung 5
K MySQL: Probleme mit dem Verbinden per IP-Adresse Datenbankprogrammierung 6
T Probleme mit Datenbank Datenbankprogrammierung 6
S ResultSet als Parameter an andere Klasse übergeben Datenbankprogrammierung 3
Z ResultSet ist null warum? Datenbankprogrammierung 12
R HSQLDB ResultSet update aktualisiert DB, aber nicht das ResultSet Datenbankprogrammierung 2
Dimax Erstellen ResultSet und Statement Datenbankprogrammierung 30
C PostgreSQL ResultSet.TYPE_SCROLL_SENSITIVE setzen Datenbankprogrammierung 2
L MySQL Bekomme einen Fehler beim ResultSet Datenbankprogrammierung 12
L Zugriff auf ein Resultset Datenbankprogrammierung 7
L MySQL ResultSet vollständig auslesen Datenbankprogrammierung 20
D Resultset schließen ?? Datenbankprogrammierung 5
T Oracle Resultset to Array sehr langsam. Datenbankprogrammierung 8
J SQLite ResultSet closed -- Wiederholende DB-Abfragen Datenbankprogrammierung 6
L ResultSet Datenbankprogrammierung 1
J wie mit resultset.next() über Datensätze iterieren? Datenbankprogrammierung 15
R MySQL Umgang mit ResultSet/Fremdschlüssel ausgeben Datenbankprogrammierung 2
D MySQL ResultSet als Stream weiter geben Datenbankprogrammierung 9
M ResultSet Cachen Datenbankprogrammierung 3
R ResultSet mit "Untertabellen" Datenbankprogrammierung 4
N SQL-Statement Auslesen des Resultset wird immer langsamer Datenbankprogrammierung 6
R Resultset.last() Problem Datenbankprogrammierung 12

Ähnliche Java Themen

Neue Themen


Oben