# Problem beim Anlegen einer Tabelle



## spitzname (27. Mai 2011)

Hallo, ich versuche vergebens mit dm folgenden Code eine Tabelle in der Datenbank anzulegen. Ich bin den Code einpaar mal durchgegangen und kann leider den Fehler nicht finden und würde mich deswegen über jede Hilfe freuen.


```
import java.sql.*;

public class HsqldbRaumDAO {
	
	
	private static final String URLDB = "jdbc:hsqldb:file:hsqlDB/raumdb";
	private static final String URLDBwithShutdown = URLDB+";shutdown=true";
   
	private static final String USER = "root";
        private static final String KENNWORT = "";
	private static final String treiberKlasse = "org.hsqldb.jdbcDriver";
	private Connection connection;
	
	private static final String raumTabelle = "Raum";
	private static final String columnRaumnummer = "Raumnummer";
	private static final String columnName = "Name";
	private static final String mitarbeiterSchema = " " +
	columnRaumnummer + " INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY," +
	columnName       +" VARCHAR(64) " ;
	
	public HsqldbRaumDAO() throws Exception {
		loadDriver();
		connection = startSession();

		createTable();

       }
	
	private void loadDriver() throws Exception {
		try {
		Class.forName(treiberKlasse);
		} catch (ClassNotFoundException e) {
			System.err.println("Treiberklasse nicht gefunden!");
			return;
	    }
	}
	
	private Connection startSession() throws Exception {
		 Connection myconnection;
		 try {
		 myconnection = DriverManager.getConnection(URLDBwithShutdown, USER, KENNWORT);
		 } catch (SQLException e) {
		 throw new Exception(e);
		 }
		 return myconnection;
    }
	

	
	boolean createTable(){
		// Anweisung erzeugen
		Statement anweisung;
		try {
		anweisung = connection.createStatement();
		anweisung.execute(
		"CREATE TABLE "+raumTabelle + "(" + mitarbeiterSchema + ")" );
		} catch (SQLException e) {
	    e.printStackTrace();
		return false;
		}
		return true;
	}
		
	}

     public static void main(String[] args) throws Exception {

          new HsqldbRaumDAO();

	}

}
```

Die Verbindung zu Datenbank ist hergestellt den mit dem folgenden Code klappt es ohne Probleme eine Tabelle azulegen, wo ist der unterschied????:L:bahnhof:


```
import java.sql.Connection;
import java.sql.Connection; 	// wird fÃ¼r die Verbindung zur DB benÃ¶tigt.
import java.sql.DriverManager; 	// Stellt die Verbindung zu DB her.
import java.sql.ResultSet; 		// Das Ergebnis der SQL Abfrage.
import java.sql.SQLException; 	// Fehlererkennung
import java.sql.Statement; 		// der SQL Befehl.

public class MyFirstHsqlConnection {
	
	public MyFirstHsqlConnection() {

		try {
			// Treiberklasse laden
			Class.forName("org.hsqldb.jdbcDriver");
		} catch (ClassNotFoundException exception) {
			System.err.println("Treiberklasse nicht gefunden!");
			return;
		}

		// Connection Instanz erstellen. 
		Connection con = null;

		try {
			
			// Verbindung herstellen.
			con = DriverManager.getConnection(
					"jdbc:hsqldb:file:hsqlDB/raumdb; "
					+ "shutdown=true", "root", "");
			
			// Statement Instanz erstellen
			Statement stmt = con.createStatement();
			
			// SQL Statement.
			String sql = "CREATE TABLE raumTabelle (ID INT PRIMARY KEY, " +
						 "Fahrer VARCHAR(25) NOT NULL, Punkte FLOAT NOT NULL," +
						 " WM SMALLINT , Siege SMALLINT , Poles SMALLINT );";
			
			// AusfÃ¼hrung des SQL Statement.
			stmt.execute(sql);
			


			// Statement schlieÃŸen
			stmt.close();
		} catch (SQLException exception) {
			exception.printStackTrace();
		} finally {
			if (con != null) {
				try {
					con.close();
				} catch (SQLException exception) {
					exception.printStackTrace();
				}
			}
		}
	}

	/**
	 * Mein Classe die beim Start AusgefÃ¼hrt wird.
	 * 
	 * @param args  Konsoleneingaben
	 */
	public static void main(String[] args) {
		new MyFirstHsqlConnection();

	}

}
```


----------



## Gast2 (27. Mai 2011)

Wird wohl an falsch zusammen gestellten Query String liegen. Was steht den in der Exception? Zeig mal den StackTrace.


```
String sql =  "CREATE TABLE "+raumTabelle + "(" + mitarbeiterSchema + ")" ;
 System.out.println(sql);
 anweisung.execute(sql);
```

würde dir auch schon mal einen guten Hinweis liefern. Warum baust du das überhaupt so komisch zusammen?


----------



## spitzname (27. Mai 2011)

Danke für die schnelle Antwort, es wird aber leider keine Fehlermeldung ausgegeben.


----------



## Gast2 (27. Mai 2011)

Siehe mein Edit - also zeig mal den Query String


----------



## spitzname (27. Mai 2011)

Damit wird folgende Ausgabe erzeugt:

```
String sql =  "CREATE TABLE "+raumTabelle + "(" + mitarbeiterSchema + ")" ;
		System.out.println(sql);
		anweisung.execute(sql);
```

Ausgabe:
CREATE TABLE Raum( Raumnummer INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,Name VARCHAR(64) )

aber worauf kann man daraus schliessen?


----------



## Rin (30. Mai 2011)

hm.... naja ich kann mir vorstellen das er irgent ein zeichen fehler haben wird er gibt keine exception aus??

lg


----------

