# SQLExcpetion



## rapthor (12. Jan 2005)

Das hier wirft mir eine SQLException, obwohl ich eigentlich alles so gemacht habe, dass es funktionieren sollte. Woran kann das liegen? Habe mal getestet und bin zum Schluss gekommen, dass diese Exception das erste Mal mit der Zeile

stmt.execute("DROP TABLE ADRESSEN");

geworfen wird.



```
Connection con = null;
	
	// Verbindung aufbauen
	String URL="jdbc:odbc:Adressen";
	String username = "";
	String password = "";
	
	// Treiber laden
	try {
	Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
	
	//Verbindung zu ODBC herstellen
	con = DriverManager.getConnection(URL,username,password);
	
	//Tabelle erstellen
	Statement stmt = con.createStatement();
		
	//SQL Exception wird hierbei geworfen
	stmt.execute("DROP TABLE ADRESSEN");
	stmt.execute("CREATE TABLE ADRESSEN (Name VARCHAR (50), Nr INTEGER CONSTRAINT" + "Nr PRIMARY KEY)");
		
	// Einträge einfügen
	stmt.executeUpdate("INSERT INTO ADRESSEN VALUES ('Herr Knast', 23)");
	stmt.executeUpdate("INSERT INTO ADRESSEN VALUES ('Herr JVA', 24)");
	stmt.executeUpdate("INSERT INTO ADRESSEN VALUES ('Herr Arbeitslager', 25)");
	
	
	// Einträge anzeigen
	ResultSet rs = stmt.executeQuery("SELECT * FROM ADRESSEN");
		while (rs.next()) {
			String Name = rs.getString("Name");
			int Nr = rs.getInt("Nr");
			eintrag.setText("Name:" + Name + "Nr: " + Nr + "\n");
		}
		
	// Datenbank schließen
	con.close();
		
	}
	catch (SQLException sqle) {
		System.out.println("SQL Exception while trying to open/create ODBC DB!");
	}
	catch (ClassNotFoundException cnf){
		System.out.println("Class not found while trying to open DBASE!");
	}
```

Ich habe in Windows XP unter Verwaltung eine Datenbank mit dem Treiber "Microsoft Access-Treiber (*.mdb)" erstellt und sie "Adressen.mdb" genannt. Diese mdb-Datei befindet sich im gleichen Verzeichnis, wie mein Quellcode.

Wo kann mein Fehler liegen?


----------



## Rapthor83 (12. Jan 2005)

Hier ist ein printStackTrace der Exception:

java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Syntaxfehler in CREATE TABLE-Anweisung.
	at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)
	at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
	at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(Unknown Source)
	at sun.jdbc.odbc.JdbcOdbcStatement.execute(Unknown Source)
	at TextEdit.open_dbase(TextEdit.java:1159)
	at TextEdit$24.actionPerformed(TextEdit.java:421)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)


----------



## rapthor (12. Jan 2005)

Ups, hab den Fehler entdeckt ... lag natürlich an meinem SQL-Befehl selbst. Falsche Syntax, hätte ich gleich mal printStackTrace() machen sollen


----------

