Access Datenbankverbindung

Marshallbbw

Erfahrenes Mitglied
Hallo,

ich versuche eine Verbindung zu einer Access Datenbank zu erstellen. Aber irgendwie bekomme ich das nicht hin. Bin auch nicht wirklich der Krack in OOP und beginne gerade erst mit Java.
Ich haber mit Access eine Datenbank namens archiv.mdb erstellt. nun wollte ich mit folgenden Klassen keine Datenbankverbindung erstellen um dann auch später abfragen zu können.

Code:
class Archiv
{
  private String query;
  private String verbindung;
  private String sqlSchnittstelle;

  public Archiv()
  {
    query = "";
    verbindung = "";
    sqlSchnittstelle = "";
  }
  
  public String getQuery()
  {
    return query;
  }
  
  public void setQuery(String localQuery)
  {
    query = localQuery;
  }
  
  public void createMyConnection(String connString)
  {
    try
    {
      verbindung = DriverManager.getConnection(connString);
      sqlSchnittstelle = verbindung.createStatement();
    }
    catch (SQLException e)
    {
      System.out.println("Verbindungsfehler zur Datenbank: " + e.getMessage());
    }
  }
}

und

Code:
class execDatabase
{
  public static void main(String[] args)
  {
    Archiv myConn = new Archiv();
    myConn.setQuery("SELECT * FROM tabname");
    System.out.println(myConn.getQuery());

    myConn.createMyConnection("jdbc:odbc:archiv");

  }
}

Ich hoffe ihr könnt mir helfen und zeigen wie man das programmiert. Bin echt am verzweifeln.
 
Hallo!

Code:
  /**
   * 
   */
  package de.tutorials;
  
  import java.sql.Connection;
  import java.sql.DriverManager;
  import java.sql.ResultSet;
  import java.sql.ResultSetMetaData;
  import java.sql.Statement;
  
  /**
   * @author Tom
   * 
   */
  public class MSAccessExample {
  	/**
  	 * @param args
  	 */
  	public static void main(String[] args) throws Exception {
  		Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
  
  		Connection con = DriverManager
 		 	.getConnection("jdbc:odbc:DRIVER={Microsoft Access Driver (*.mdb)};DBQ=C:/Programme/Microsoft Office/Office/Samples/Nordwind.mdb");
  
  		Statement stmt = con.createStatement();
  
  		ResultSet rs = stmt.executeQuery("SELECT * FROM kunden");
  		ResultSetMetaData rsmd = rs.getMetaData();
  		int clmCnt = rsmd.getColumnCount();
  
  		while (rs.next()) {
  			for (int i = 1; i <= clmCnt; i++) {
 				System.out.print(rs.getString(i));
  				System.out.print(" ");
  			}
  			System.out.println();
  		}
  		rs.close();
  		stmt.close();
  		con.close();
  	}
  }

Gruß Tom
 
Hallo Tom,
vielen Dank für dein Beispiel. Mir ist jetzt einiges klar geworden. Ich hab da aber noch ne Frage. Ich wollte das dann mal testen, hab den Tabellennamen geändert und meinen Pfad eingeben. Beim ausführen gabs dann aber folgende Meldung:

"Exception in thread "main" java.lang.NoClassDefFoundError: de/tutorials/MSAccess
Example"

und was bedeutet package de.tutorials; - Ich schätze das hängt miteinander zusammen. Ich versteh das nicht. Kannst du mir das erklären.

Danke nochmal.
 
Hi!

Lösch einfach die Zeile
Code:
package de.tutorials;
und es sollte bei dir laufen.
Falls du was über packages mal nachlesen willst, schau mal hier vorbei.

MfG
Sebastian
 
Hallo,

nee leider funktioniert das auch nicht. Ich bekomme dann eine viel umfangreichere Meldung. Zwar immer noch Exception in thread ... aber er listet ne Menge java.* auf. MMMhhh was kann ich da machen?
 
Hab jetzt noch ein bisschen rum getüffelt, es aber noch nicht geschafft - bekomme jetzt eine andere meldung.

Exception in thread "main" java.sql.SQLException: [Microsoft][ODBC Driver Manager] Der Datenquellenname wurde nicht gefunden, und es wurde kein Standardtreiber angegeben


mein Quelltext sieht folgendermaßen aus:

Code:
 import java.sql.Connection;
 import java.sql.DriverManager;
 import java.sql.ResultSet;
 import java.sql.ResultSetMetaData;
 import java.sql.Statement;

 public class MSAccessExample
 {
   public static void main(String[] args) throws Exception
   {
     Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

     Connection con = DriverManager.getConnection("jdbc:odbc:-)RIVER={Microsoft Access Driver (*.mdb)};DBQ=D:/Dokumente und Einstellungen/USER/Desktop/java/recherche/db/archiv.mdb");

     Statement stmt = con.createStatement();

     ResultSet rs = stmt.executeQuery("SELECT * FROM tabname");
     ResultSetMetaData rsmd = rs.getMetaData();
     int clmCnt = rsmd.getColumnCount();

     while (rs.next())
     {
       for (int i = 1; i <= clmCnt; i++)
       {
         System.out.print(rs.getString(i));
         System.out.print(" ");
       }
       System.out.println();
     }
     rs.close();
     stmt.close();
     con.close();
   }
 }
 
Hallo,
ohne deinen Quelltext komplett zu lesen, ist mir etwas ins auge gefallen:

Connection con = DriverManager.getConnection("jdbc:eek:dbc:)RIVER={Microsoft Access Driver (*.mdb)};DBQ=D:/Dokumente und Einstellungen/USER/Desktop/java/recherche/db/archiv.mdb");

Es geht um einen Treiber und nicht um einen Fluss. :)
Also mach mal ein D davor und versuchse es erneut.

Ansonsten könnte ich mir noch vorstellen, dass Verzeichnisse mit Leerzeichen noch eine Fehlermeldung hervorrufen könnten. Ich hatte in einem anderen Zusammenhang jedenfalls diesbezüglich in Java schonmal Probleme.
 
Hallo!

Code:
  /**
   * 
   */
  package de.tutorials;
  
  import java.sql.Connection;
  import java.sql.DriverManager;
  import java.sql.ResultSet;
  import java.sql.ResultSetMetaData;
  import java.sql.Statement;
  
  /**
   * @author Tom
   * 
   */
  public class MSAccessExample {
  	/**
  	 * @param args
  	 */
  	public static void main(String[] args) throws Exception {
  		Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
  
  		Connection con = DriverManager
 		 	.getConnection("jdbc:odbc:DRIVER={Microsoft Access Driver (*.mdb)};DBQ=C:/Programme/Microsoft Office/Office/Samples/Nordwind.mdb");
  
  		Statement stmt = con.createStatement();
  
  		ResultSet rs = stmt.executeQuery("SELECT * FROM kunden");
  		ResultSetMetaData rsmd = rs.getMetaData();
  		int clmCnt = rsmd.getColumnCount();
  
  		while (rs.next()) {
  			for (int i = 1; i <= clmCnt; i++) {
 				System.out.print(rs.getString(i));
  				System.out.print(" ");
  			}
  			System.out.println();
  		}
  		rs.close();
  		stmt.close();
  		con.close();
  	}
  }

Gruß Tom

Vielen Dank für das Bsp hat mir viel Arbeit erspart, war schon langsam am verzweifeln *g*
 
Hallo,
ich bin letzte Woche auf Windows Vista umgestiegen und auf einmal bekomme ich folgende Fehlermeldung bei meiner Datenbank-Connection:

Code:
  public void open() throws SQLException{
  try{
      // Treiber laden und Connection erzeugen

      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
      con = DriverManager.getConnection("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=Datenbank.mdb","Admin","test");

      //System.out.println("nach Treiber laden");
  } catch(ClassNotFoundException cnfe){

    throw new SQLException("Can't find class for driver: ");
  }catch(Exception e){
    e.printStackTrace();
  }


  }

Wie kann ich das ändern? Ich habe es auch schon mit direktem Pfad versucht.
Vielleicht weiß ja jemand Rat hier.
Danke schön.
JP
 

Neue Beiträge

Zurück