# Tabelle in Access Datei mit JDBC generieren



## miwieg (13. Aug 2009)

Ich versuche gerade in einer bestehenden Access-Datenbank Datei (.mdb), eine neue Tabelle mit JDBC zu generieren. Ich benutze JDBC/ODBC bridge.
Ich habe im Netz Beispielcode gefunden, der auch syntaktisch wohlgeformt ist, aber die Tabelle wird nicht generiert.

```
import java.sql.*;

public class createtb {
	private Connection Database;

	public createtb() {
		String url = "jdbc:odbc:customers";
		String userID = "michael";
		String password = "drwho";
		try {
			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
			Database = DriverManager.getConnection(url, userID, password);
		} catch (ClassNotFoundException error) {
			System.err.println("Unable to load the JDBC/ODBC bridge." + error);
			System.exit(1);
		} catch (SQLException error) {
			System.err.println("Cannot connect to the database. " + error);
			System.exit(2);
		}
		Statement DataRequest;
		try {
			String query = "Create Table address ( CustomerNumber CHAR(30), CustomerStreet CHAR(30), CustomerCity CHAR(30), CustomerZip CHAR(30))";
			DataRequest = Database.createStatement();
			DataRequest.executeQuery(query);
			DataRequest.close();
			Database.close();
		} catch (SQLException error) {
			System.err.println("SQL error." + error);
			System.exit(3);
		}
	}

	public static void main(String args[]) {
		final createtb link = new createtb();
		System.exit(0);
	}
}
```
Ich habe natürlich vor Laufen des Programms im ODBD-Datenquellen Administrator die entsprechende Access-Datei hinzugefügt.
Ein anderes Java-Programm, das aus der Datei den Inhalt einer bestehenden Tabelle (in Access selbst erstellt) ausliest, funktioniert problemlos.

Das obige Programm wirft folgende Ausnahme aus

```
SQL error.java.sql.SQLException: No ResultSet was produced
```

aber ich habe gehört, dass das zu erwarten ist und nicht die Datenbankgenerierung stört.

Kann mir irgendjemand einen Tipp geben, was ich falsch mache?

Vielen Dank im Voraus!


----------



## FatFire (13. Aug 2009)

Schon einmal execute statt executeQuery probiert? Bei der Erstellung einer neuen Tabelle gibt es im Normalfall ja kein ResultSet zurück. Aber bin mir auch nicht sicher, dass das einen Unterschied macht. Häng vielleicht auch mal ein Semikolon ans Ende Deines Querystring.

Gruß FatFire


----------



## maki (13. Aug 2009)

Würde auch sagen das ein CREATE TABLE Statement keine Query ist 

Ansosnten erfolgt die Nutzung der JDBC-ODBC Krücke auf eigene Gefahr.


----------



## miwieg (13. Aug 2009)

Ja, es lag tatsächlich an der Auswahl der Methode. Mit "execute" funktioniert es.

Vielen Dank!!!


----------

