Announcement

Collapse
No announcement yet.

Tabelle in Access Datei mit JDBC generieren

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Tabelle in Access Datei mit JDBC generieren

    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.
    Code:
    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!

  • #2
    a) wäre es schön die Objekt so zu benennen, wie sie ungefähr der Klasse entsprechen. DriverManager.getConnection gibt keine Database zurück, sonder eine Connection usw.

    b) Statt createStatement

    http://java.sun.com/j2se/1.4.2/docs/...a.lang.String)
    Christian

    Comment


    • #3
      Außerdem: "Create Table..." ist keine query sondern ein DDL statement. Daher executeUpdate statt executeQuery benutzen, dann gibt es auch keine Exception "No ResultSet was produced".

      http://java.sun.com/j2se/1.4.2/docs/...lang.String%29
      http://java.sun.com/j2se/1.4.2/docs/...teUpdate%28%29

      Comment

      Working...
      X