# In MySql Datenbank schreiben



## Moritz_1234 (5. Nov 2015)

Hallo,
Ich habe mal wieder eine Frage  :

Wie schreibe ich in eine MySql Datenbank?
Wenn man auslesen will geht das ja so:


```
try{
            //Connect
            Connection myConn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "passwort");
         
            //Statement
            Statement myStat = myConn.createStatement();
         
            //Execute SQL Query
            ResultSet reSe = myStat.executeQuery("select * from new_table");
          
            //Process the result set
            while(reSe.next()){
                String id = reSe.getString("ID");
                String logAs = reSe.getString("LogAs");
                System.out.println(id+", "+logAs);
            }
        }catch(Exception e){
            e.printStackTrace();
        }
```

Aber wie schreibt man rein? Nimmt man da auch diesen Ansatz? Oder fängt man ganz anders an?
Ich habe im Internet schon geguckt, aber entweder nichts gefunden oder nichts verstanden.

Vielen Dank für eure Antworten
Moritz


----------



## JStein52 (5. Nov 2015)

Ist ein SQL-Thema aber guck mal bei "insert into ..." nach. (oder update wenn du ändern willst)


----------



## Moritz_1234 (5. Nov 2015)

Ok Danke


----------



## Moritz_1234 (5. Nov 2015)

Okay, ich habe jetzt was gefunden:

```
myStat.execute("INSERT INTO new_table (ID) VALUES(5)");
myStat.execute("INSERT INTO new_table (LogAs) VALUES(User2)");
```

Der Code in der oberen Zeile geht, der Code in der Zeile darunter funktioniert nicht.
Weiß jemand wo der Fehler liegt? Vielleicht hat es etwas mit dem Datentyp (1. Zeile: int, 2. Zeile VARCHAR) zu tun. (Den Datentyp, den man in der MySql Tabellenkonfiguration einstellt)
Wenn man einen String einfügen will, benutz man dann VARCHAR?

Vielen Dank für eure Antworten
Moritz


----------



## thet1983 (5. Nov 2015)

ich gehe mal davon aus das LogAs ein varchar ist oder?
was ist User2? String?


----------



## Joose (5. Nov 2015)

Du fügst in eine Tabelle nicht jeden Wert für eine Datenzeile einzeln ein. Sondern gibst an für welche Spalten du Daten eintragen willst und gibst eben diese Daten an.

Ja für String kannst du Varchar aber auch Char verwenden, das kommt immer auf den Anwendungsfall an.

Dein Problem ist das man ein String in SQL Befehlen ebenfalls unter Hochkomma setzen muss.


```
myStat.execute("INSERT INTO new_table(ID, LogAs) VALUES (5, 'User2');");
myStat.execute("INSERT INTO new_table(LogAs, ID) VALUES ('User2', 5);");
```

Du kannst nach dem Tabellennamen Angeben welche Spalten alle befüllt werden sollen. Und in der gleichen Reihenfolge kannst du dann auch die Values angeben.
*Das gehört aber zu Grundlagen zum Arbeiten mit SQL, diese solltest du dir dringeng anschauen. Bevor du hier Java und SQL mischt übe dein SQL Wissen erstmals mittels DB Editor (MySql Workbench zum Beispiel)*


----------



## JStein52 (5. Nov 2015)

Jedes "INSERT INTO ..." fügt einen neuen Satz in deine Datenbank ein !!!!  Wolltest du das in deinem Beispiel ? Wie sieht denn die Definition deiner new_table aus ?
Wenn ID wie zu vermuten ein "PRIMARY KEY" ist dann kannst du nur eine der Zeilen von  @Joose eingeben, bei der zweiten wirds dann einen Fehler geben weil ein Satz mit der ID 5 schon in der DB enthalten ist.


----------

