# Microsoft Access Abfrage



## hauke1981 (30. Nov 2006)

Hi
will gerade mal eine Probeabfrage in einem Java Programm realisieren und komm nicht auf die richtige Lösung.

Hab folgendes mal geschrieben


```
import java.sql.*;
import java.io.*;

public class Test
{public static void main(String[] args)
 { try
   { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
     Connection c =
     DriverManager.getConnection("jdbc:odbc:test");
     Statement s = c.createStatement();
     ResultSet r = s.executeQuery("SELECT * FROM Mitglieder");
     while(r.next())
     { System.out.println(r.getString("name"));}
    }
     catch (SQLException e)
     { e.printStackTrace();}
     catch (ClassNotFoundException e)
     { e.printStackTrace();}
 }
}
```

Aber der findet den Datenquellenname nicht. Meine Datenbank liegt im gleichen Ordner in dem auch mein Programm liegt. Wie muss ich das dann eingeben?

Greetz


----------



## Gast (30. Nov 2006)

```
String sDriver = "sun.jdbc.odbc.JdbcOdbcDriver";
String sCnn = "jdbc:odbc:";
sCnn += "DRIVER=Microsoft Access-Treiber (*.mdb)";
sCnn += ";" + "DBQ=" + "Name.mdb";
Class.forName(sDriver);
Connection cnn = DriverManager.getConnection(sCnn);	
		
Statement st = cnn.createStatement();
String sSQL = "SELECT * FROM Mitglieder";
ResultSet rst = st.executeQuery(sSQL);
```

hier siehst du den verbindungs aufbau zu einer Access DatenBank


----------



## trmx (1. Dez 2006)

So weit ich mich erinnern kann gehört die Datenbank auch in den ODBC Einstellungen eingetragen.

Start->Systemsteuerung->Verwaltung->Datenquellen(ODBC)
Reiter "Benutzer-DSN" -> Hinzufügen

Den "Microsoft Access Treiber" auswählen und die Datenbank eintragen. Den "Datenquellenname" den du vergibst verwendest dann beim DriverManager im Programm



```
DriverManager.getConnection("jdbc:odbc:xxx");
```
xxx = Datenquellenname

Wie gesagt ich weiss leider nicht mehr ob man das unbedingt machen muss.


----------



## L-ectron-X (1. Dez 2006)

Hier, eine Schritt-für-Schritt-Anleitung mit einfachen Code-Beispielen. Hat mit auch mal geholfen.
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=2691&lngWId=2#MY_TOP


----------



## vogella (8. Dez 2006)

Hallo,

oder Du machst es ohne das Anlegen des ODBC Treibers direkt im Code:


```
protected void openDBConnection(String dbName) throws Exception {
		Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
		m_database = "jdbc:odbc:Driver={Microsoft Access-Treiber (*.mdb)};DBQ="
				+ dbName;
		m_user = "";
		m_pw = "";
		m_con = DriverManager.getConnection(m_database, m_user, m_pw);
	}
```

Viele Grüße, Lars


----------



## hauke1981 (21. Dez 2006)

Ich hab das jetzt mal so ausprobiert aber der findet immer noch nicht meine Datenbank und es wird auch angezeigt das kein geeigneter Treiber gefunden wurde.


```
import java.sql.*;  import java.io.*;

public class test
{ public static void main (String []args)
  { try {
     String sDriver = "sun.jdbc.odbc.JdbcOdbcDriver";
     String sCnn = "jdbc:odbc:Urlaubstage";
     sCnn += "DRIVER=Microsoft Access-Treiber (*.mdb)";
     sCnn += ";" + "DBQ=" + "Urlaubstage.mdb";
     Class.forName(sDriver);
     Connection cnn = DriverManager.getConnection(sCnn);

     Statement st = cnn.createStatement();
     String sSQL = "SELECT * FROM Urlaubstage.Mitarbeiter";
     ResultSet rst = st.executeQuery(sSQL);

    while(rst.next())
     { System.out.println(rst.getString("name"));}
    }
    catch (SQLException e)
     { e.printStackTrace();}
    catch (ClassNotFoundException e)
    { e.printStackTrace();
    }
  }
}
```


----------



## vogella (21. Dez 2006)

Hallo,

probier mal mein Beispiel mit dbName als "Urlaubstage.mdb". Sollte gehen. Wenn Du das in einen eigenen Try catch Block packst siehst Du auch ob die Verbindung falsch läuft oder ob das SQL Statement nachher auf die Bretter geht. Viele Grüße, Lars


----------

