# Datenbank Access einbinden



## ViLu206 (17. Mai 2014)

Hallo liebe Java-Fans,

ich bin zurzeit noch in der Lern-Phase und habe folgendes Problem. 
Ich möchte eine Access Datenbank ("Studenten-Datenbank") in Java (eclipse) einbnden und erhalte jedes mal diese Meldung:
"[Microsoft][ODBC Driver Manager] Der Datenquellenname wurde nicht gefunden, und es wurde kein Standardtreiber angegeben"

Hier der entsprechende Code:


```
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DatenbankOeffnen {

	public static void main(String[] args) {

		Connection dbVerbindung = null;

		try {
			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
			System.out.println("Treiber erfolgreich geladen...");
		} catch (ClassNotFoundException e) {
			System.out.println("Fehler beim Laden des Treibers" + e);
			System.exit(0);
		}
		try {
			dbVerbindung = DriverManager.getConnection("jdbc:odbc:Studenten-Datenbank", "", "");
			System.out.println("Verbindung erfolgreich...");
			dbVerbindung.close();
			System.out.println("Verbindung geschlossen...");
		} catch (SQLException e) {
			System.out.println("DB-Verbindungsfehler: " + e);
			System.exit(0);
		}
	}
}
```

Ich habe sicherlich irgendetwas vergessen, weiss aber nicht was. 
Aso, bei Systemsteuerung, Verwaltung ... ODBC... habe ich bereits MS Access als Datenquelle hinzugefügt.

Ich wollte die Datenbank auch mit grafischen Oberflächen (SWT) nutzen. Zum Beispiel Studenten/Noten eingeben/ändern/ansehen. Muss ich da noch etwas wichtiges beachten?

Bitte alles genau erklären, damit mir das Verständnins leichter fällt. 
Vielen Dank im voraus

Grüße ViLu


----------



## turtle (17. Mai 2014)

Mit welcher Java Version arbeitest du?

Irgendwann, ich weiss grad nicht wann genau, wurde die JDBC-ODBC Bridge entfernt. Du benötigst also einen JDBC-Treiber, der NICHT von SUN kommt.
Musst du unbedingt MS-Access nehmen? 

Es gibt doch so viele (bessere) DB unter anderem: Java Derby, H2, PostgreSQL, Oracle,...


----------



## ViLu206 (17. Mai 2014)

Leider kann ich nicht die DB ändern. Diese Geschichte ist ein Gruppen-Projekt von der Uni und wir dürfen bei den Datenbanken nur Access oder MySQL nutzen.  In meiner Gruppe hat keiner weiter Erfahrung mit den genannten DB, außer ich habe Kenntnisse in Access. Da fiel dann die Entscheidung auf Access und ich darf alles in eclipse kepler einbinden etc.... Nur mache ich das gerade zum ersten mal mit Access bzw. mit einer Datenbank.


----------



## turtle (17. Mai 2014)

Wart mal gerade..

Schau noch mal in Java-7 rein

PS: hab mir gerade noch mal JDK 7u55 installiert und da war die Bridge noch drin


----------



## ViLu206 (17. Mai 2014)

Kann es das Problem sein, dass ich einen 64 Bit Rechner habe, die Access Version aber eine 32 Bit ist? 
Ich mache das ganze ja in einer Gruppe und es muss später für jeden keine großen Probleme bereiten, auf die Datenbank zu zugreifen. Wir nutzen alles die gleiche Java Version.


----------



## turtle (17. Mai 2014)

Ja, definitiv.

Ich habe nur geschaut, ob die Klasse in  JDK 7u55 enthalten ist. Ist sie, aber Laufen in der tat könnte sie nur auf 32-bit.Also probier es mal mit einem 32-bit JDK.


----------



## strußi (17. Mai 2014)

Moin,

also wir hatten das in unserem Projekt auch, und wir haben noch mit derby.jar gearbeitet, um die db einzubinden


----------



## Ruzmanz (17. Mai 2014)

> Kann es das Problem sein, dass ich einen 64 Bit Rechner habe, die Access Version aber eine 32 Bit ist?



Jein. 32bit ist die Standardeinstellung, selbst bei einem 64bit Windows. Es ist zwar möglich diese auf 64bit "umzustellen" (siehe Windows 7 64-Bit und ODBC Treiber für Access - Endlich gelöst - Thomas Schiffler - Individuelle Softwareentwicklung ), aber dann hast du sehr viele andere Probleme ...

- Ab Java 8 hast du den Treiber nicht mehr, deshalb braucht der Anwender eine ältere Version
- Ob du eine 32/64bit JRE nutzen musst, hängt von der ODBC-Treiber Konfiguration ab
- Stellst du den Treiber um, dann werden wahrscheinlich andere Programme nicht mehr funktionieren ... wenn ich mich richtig erinnere, müsste Outlook dabei sein.

Fazit: Alles ist Mist. Wenn du das JDK 7u55 mit 32bit nutzt, wirst du die meisten Nutzer erreichen.


----------



## ViLu206 (18. Mai 2014)

Hallo, danke für die hilfreichen Tpps.

das mit der dery.jar klingt interressant... aber wie wird das genau damit gemacht?


----------



## strußi (19. Mai 2014)

Wir hatten auch eine AccessDB und eingebunden haben wir diese unter java 32Bit <- ganz wichtig

Leider kann ich nicht das komplette projekt hochladen, aber dafür bekommts du den code,
Es fehlen: derby.jar (ca.2,5 mb) und die AccessDB (ca. 2 mb)

die handhabe ist, sollte ich mit richtig erinnern, ganz einfach
derby.jar in den projektortner kopieren, und es sollte tun.

Grüße
Chris

Anhang anzeigen Verbuchung.zip


----------



## turtle (19. Mai 2014)

Man kann derby in zwei verschiedenen Varianten betreiben.

Im sogenannten *embedded-Mode* läuft die Datenbank in der gleichen JVM wie das normale Programm. Dann reicht es aus, derby.jar im Classpath zu haben und kann sofort loslegen. Nachteil hierbei ist, das es nicht möglich ist, mit weiteren Applikationen, z.B. SQL-Tools auf die Datenbank zuzugreifen während die Applikation ebenfalls mit der DB arbeitet. Also ist die DB quasi wirklich embedded und "gehört" praktisch zum Programm. Weiterer Nachteil ist natürlich das die Mengen an Daten begrenzt ist, weil diese ja sowohl sich den Speicher der Apllikation als auch der DB teilen müssen.

Man kann Derby aber auch im *Client/Server-Modus* betreiben. Dann läuft ein externer Server-Prozess, der Datenbank(en) verwaltet und zulässt, das Applikationen sich mit der Datenbank über den Server-Prozess verbindet. Dieses ist genauso wie es bei den "grossen" Datenbanken gemacht wird. Vorteil ist, das nun beliebig viele Programme gleichzeitig lesend/schreibend zugreifen können und der gesamte Speicher der JVM für die DB zur Verfügung steht. Nachteil ist, das der Serverprozess zuvor gestartet werden muss. Wenn du ein JDK installiert hast, sollte im db-Verzeichnis bereits alles vorhanden sein und den Netzwerk-Server kannst du über startNetworkServer.bat im bin-Verzeichnis starten.


----------



## Phash (20. Mai 2014)

2cents dazu:

Lad dir mysql runter.  Installier es mit dem Standard Werten. Lad dir die workbench dazu runter. 

Die mysqldb wird mit dem system gestartet.
Verbinde dich mit der workbench, Male erm Diagramme und du hast null Probleme


----------

