# SELECT ja - INSERT nein  (MySQL)



## bookstoreMK (24. Apr 2012)

Hallo,

ich habe ein Problem mit dem, von Java aus, einfügen von Text in eine angelegte TestDB in MySQL.
Das Ausführen von SELECT klappt, INSERT nicht (Anführungszeichen sind richtig gesetzt.) 
Wenn ich die als normalen Text mit printnl(...) ausgegebene INSERT-Anweisung copy&paste in dem SQL-Monitor "mysql" testweise in der Konsole einfüge, klappt es ohne Probleme... ich bin am verzweifeln.

Im Beispiel wir einmal sql2 erfolgreich ausgeführt, alle Daten sind dann in der while-Schleife zu sehen.
(Anweisung in sql1 geht nicht, selbst wie gesagt nicht, wenn ich den Text copy&paste in dem Mysql-Monitor einsetze.)

Ist da ein Newbie-Fehler???  ;(

Bsp:

```
...
        conn = getInstance();
        Statement query;
        if(conn != null)
        {

            query = conn.createStatement();
 
            String sql1 = "INSERT INTO vocabulary (id, english, deutsch, grade) VALUES (0 , \"HALLO\", \"HELLO\", 9);";
            String sql2 = "SELECT * FROM vocabulary;";
            
            System.out.println(sql2);                                    // hier String für COPY&PASTE
        			
            ResultSet result = query.executeQuery(sql2);
            		
            while (result.next()) {                                // nur für SELECT Befehl
            	System.out.println(result.getString(2));   // hier werden bei SELECT Daten von Spalte 2 ausgegeben
            }
 
    }
```

Danke schon mal für Hilfe!!!
Grüße,
MK

--
PS: Fehlermeldung bei sql1: 
java.sql.SQLException: Can not issue data manipulation statements with executeQuery().
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:982)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927)
	at com.mysql.jdbc.StatementImpl.checkForDml(StatementImpl.java:490)
	at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1467)
	at de.....DatabaseAccess.insertVocsFromTextfile(DatabaseAccess.java)
	at de.....main(Start.java)


----------



## SlaterB (24. Apr 2012)

man ist ja schnell bei der Hand im Ändern von SQL, aber lohnt es nicht sich ein "INSERT INTO" in irgendeinem Tutorial anzuschauen, 
falls etwas zu beachten ist?

die Änderung ist aber in der Tat leicht zu übersehen, die Fehlermeldung könnte es auch noch deutlicher sagen,
executeUpdate() statt executeQuery() verwenden und auf ein ResultSet kannst du lange warten


----------



## Evil-Devil (24. Apr 2012)

MySQL erwartet bei Strings ein Hochkommata und keine Gänsefüsschen. Also ' anstatt ".


----------



## bookstoreMK (24. Apr 2012)

Danke SlaterB. Newbie-Fehler!  
(Anführungszeichen werden auch akzepiert.)

Gruß,
MK


----------

