# Variable in MySQL einfügen



## chuvak (24. Feb 2010)

Ich stelle eine Datenbankverbindung zur MySQL-Datenbank her, was auch klappt.
Wenn ich dann versuche, "statisch" Werte reinzuschreiben, also sowas:

```
befehl.execute("INSERT into table1 (name) values ('Hans')");
```
klappt es auch.

Wenn es aber eine Variable sein soll, wie hier:

```
String inhalt = "Abc";
befehl.execute("INSERT into table1 (name) values (inhalt)");
```
klappt es nicht mehr.

Wo liegt der Fehler?

(In der Tabelle sind die betroffenen Spalten entweder vom Typ "Text" oder "Varchar".)




```
package datenbank;

import java.sql.*;

public class Database {

    static String URL = "jdbc:mysql://localhost:3306/DataBase";
    static String user = "root";
    static String pass = "";
    static Statement befehl = null;
    static Connection verbindung = null;

    public Database() {
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (Exception e) {
            System.out.println("Treiber konnte nicht geladen werden");
            return;
        }

        try {
            verbindung = DriverManager.getConnection(URL, user, pass);
            befehl = verbindung.createStatement();
        } catch (Exception e) {
            System.out.println("Verbindung konnte nicht hergestellt werden");
        }
    }
        try {
            String inhalt= "Abc";

            System.out.println(anekA);
            System.out.println(datumA);

            befehl.execute("INSERT into table1 (name) values (" + inhalt+ ")");

        } catch (Exception e) {
            System.out.println("Anfrage war nicht erfolgreich");
        
    }
}
```






*Habs jetzt:*

```
String inhalt = "Abc";
befehl.execute("INSERT into table1 (name) values ('" + inhalt + "')");
```


----------



## fastjack (24. Feb 2010)

Du mußt einen String mit ' ' einfügen. Diese Hochkommatas fehlen bei Dir.


----------



## Gast2 (24. Feb 2010)

fastjack hat gesagt.:


> Du mußt einen String mit ' ' einfügen. Diese Hochkommatas fehlen bei Dir.



Oder besser gleich PreparedStatements verwenden...


```
PreparedStatement stmt;
		ResultSet rs;
		try {
			String sql= "INSERT into table1 (name) values (?)");
			stmt.setString(1, "ABC");
			stmt = conn.prepareStatement(sql);
			stmt.execute();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			rs.close();
			stmt.close();
		}
```


----------

