Problem beim Anlegen einer Tabelle

spitzname

Mitglied
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.

Java:
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:

Java:
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();

	}

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

Java:
 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?
 
Zuletzt bearbeitet von einem Moderator:
Damit wird folgende Ausgabe erzeugt:
Java:
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?
 
Zuletzt bearbeitet:

Zurück
Oben