Datenbankverbindung (Java): Unterschied zwischen den Versionen

Aus Byte-Welt Wiki
Zur Navigation springenZur Suche springen
(HSQLDB Datenbank)
Zeile 1: Zeile 1:
 
Da man in Programmen oft eine größere Menge an Daten verarbeiten und speichern will, nimmt man dafür oftmals eine [[Datenbank]] um diese gut sortiert zu speichern.
 
Da man in Programmen oft eine größere Menge an Daten verarbeiten und speichern will, nimmt man dafür oftmals eine [[Datenbank]] um diese gut sortiert zu speichern.
Um eine [[Datenbank]] mit [[Java]] zu verwenden, muss man immer nach dem gleichen Schema vorgehen:
+
Um eine [[Datenbank]] mit [[Java]] zu verwenden, muss man immer nach dem gleichen Schema vorgehen:<br>
 
# Treiber laden
 
# Treiber laden
 
# Verbindung aufbauen
 
# Verbindung aufbauen
 
# Querys ausführen
 
# Querys ausführen
 
# Verbindung schließen
 
# Verbindung schließen
 
+
<br>
 +
'''Damit es am Ende keine Fehlermeldung vom Compiler beim Kompilieren und später vom Interpreter beim Ausführen gibt, ist es erforderlich, dass die entsprechenden Klassen im Programm importiert bzw. in den Classpath gesetzt werden.'''
 +
<br>
 
=Treiber laden=
 
=Treiber laden=
 
Die [[Treiber]] für die [[Datenbanken]] werden meistens direkt mit den [[Datenbank]]en mitgeliefert, da die Hersteller dies direkt als Support anbieten. Einen Unterschied machen die [[ODBC]] [[Datenbanken]] die man in [[Windows]] direkt integrieren kann, diese können mit den [[JDBC]]/[[ODBC]] [[Treiber]] von [[Java]] direkt verwendet werden, eine [[ODBC]] [[Datenbank]] ist z.B. eine [[Access]] [[Datenbank]].
 
Die [[Treiber]] für die [[Datenbanken]] werden meistens direkt mit den [[Datenbank]]en mitgeliefert, da die Hersteller dies direkt als Support anbieten. Einen Unterschied machen die [[ODBC]] [[Datenbanken]] die man in [[Windows]] direkt integrieren kann, diese können mit den [[JDBC]]/[[ODBC]] [[Treiber]] von [[Java]] direkt verwendet werden, eine [[ODBC]] [[Datenbank]] ist z.B. eine [[Access]] [[Datenbank]].

Version vom 3. November 2009, 10:40 Uhr

Da man in Programmen oft eine größere Menge an Daten verarbeiten und speichern will, nimmt man dafür oftmals eine Datenbank um diese gut sortiert zu speichern. Um eine Datenbank mit Java zu verwenden, muss man immer nach dem gleichen Schema vorgehen:

  1. Treiber laden
  2. Verbindung aufbauen
  3. Querys ausführen
  4. Verbindung schließen


Damit es am Ende keine Fehlermeldung vom Compiler beim Kompilieren und später vom Interpreter beim Ausführen gibt, ist es erforderlich, dass die entsprechenden Klassen im Programm importiert bzw. in den Classpath gesetzt werden.

Treiber laden

Die Treiber für die Datenbanken werden meistens direkt mit den Datenbanken mitgeliefert, da die Hersteller dies direkt als Support anbieten. Einen Unterschied machen die ODBC Datenbanken die man in Windows direkt integrieren kann, diese können mit den JDBC/ODBC Treiber von Java direkt verwendet werden, eine ODBC Datenbank ist z.B. eine Access Datenbank.

Access Datenbank

ODBC-Datenquellen-Administrator

Um die Verbindung zu einer Access Datenbank herzustellen, muss man diese erst mal in Windows eingebunden haben, dies geschieht über die Systemsteuerung <math>\rightarrow</math> Verwaltung <math>\rightarrow</math> Datenquellen (ODBC) hier muss die Datenbank jetzt eingerichtet werden.

Um diese jetzt in Java zu verwenden, muss wie anfangs schon erwähnt der Treiber geladen und die Verbindung aufgebaut werden. <code=java> //laden der Treiberklasse Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //zurückgeben der neuen Verbindung Connection con = DriverManager.getConnection("jdbc:odbc:Datenbankname","Benutzer","Passwort"); </code=java>

Es gibt allerdings auch eine Variante, bei der o.g. Registrierung der ODBC Datenquellen entfallen kann. Eine reale Methode zur Herstellung einer Verbindung kann so aussehen: <code=java>private static Connection con; [...]

public boolean connect(String filename, String user, String passwd)

  throws SQLException, ClassNotFoundException {
     
  String url = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=";
  url += filename.trim() + ";READONLY=false}";      
  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
  con = DriverManager.getConnection(url, user, passwd);
     
  return true;

}</code=java>

MySQL Datenbank

Um die Verbindung zu einer MySQL Datenbank herzustellen, muss diese auf einem erreichbaren Rechner laufen und sollte dieser Rechner nicht der gleiche sein wo auch das Programm ausgeführt wird, muss der Benutzer auch die Rechte haben von außerhalb auf die Datenbank zu zugreifen. Um diese jetzt in Java zu verwenden, muss wie anfangs schon erwähnt, der Treiber geladen und die Verbindung aufgebaut werden. <code=java> //laden der Treiberklasse Class.forName("com.mysql.jdbc.Driver"); //zurückgeben der neuen Verbindung Connection con = DriverManager.getConnection("jdbc:mysql://Host:Port/Datenbank","Benutzer","Passwort"); </code=java> Die Portangabe muss man nicht machen solange der Server auf dem Standard MySQL Port 3306 läuft. Bei der Angabe der Datenbank wird automatisch diese Datenbank für den Gebrauch ausgewählt, so dass man diese nicht extra auswählen muss.

HSQLDB Datenbank

Um die Verbindung mit einer HSQLDB Datenbank aufzubauen, hat man mehrere Möglichkeiten da die Datenbank in verschiedenen Modi laufen kann, hier wird nur auf die Standalone Variante eingegangen. Wenn man diese Datenbank verwenden will, muss man nichts im System einrichten oder installieren. Es wird nur vorausgesetzt, dass die hsqldb.jar im Classpath ist. <code=java> // laden des Datenbanktreibers Class.forName("org.hsqldb.jdbcDriver"); // Aufbauen der Verbindung zu der Datenbank Connection con = DriverManager.getConnection("jdbc:hsqldb:file:PfadzurDatenbank","Benutzer","Passwort"); </code=java> Der Pfad kann relativ oder auch absolut angegeben werden, außerdem können danach verschiedene Optionen folgen. Dabei kann unter Windows-Systemen ein Backslash (\) im Pfad zur Datenbank-Datei zu Problemen führen. Besser gleich einen Slash (/)zur Verzeichnistrennung setzen. Der Benutzer ist standardmäßig "sa" und ein Passwort ist nicht vergeben.

Firebird Datenbank

Um die Verbindung zu einer Firebird Datenbank herzustellen muss der Server auf einem erreichbaren Rechner installiert sein. Damit man diese jetzt in Java zu verwenden kann, muss wie anfangs schon erwähnt, der Treiber geladen und die Verbindung aufgebaut werden. <code=java> //laden der Treiberklasse Class.forName("org.firebirdsql.jdbc.FBDriver"); //zurückgeben der neuen Verbindung Connection con = DriverManager.getConnection("jdbc:firebirdsql:HOST/PORT:PfadzuDatenbank","Benutzer","Passwort"); </code=java> Der Pfad zu der Datenbank muss immer Absolut angegeben werden, damit die Datenbank gefunden wird.

H2 Database

Für die noch recht junge, aber sehr schnelle, in Java programmierte Datenbank H2, sieht der Code zum Aufbau der Verbindung zur Datenbank so aus: <code=java> Class.forName("org.h2.Driver"); Connection conn = DriverManager.getConnection("jdbc:h2:PfadzurDatenbank", "Benutzer", "Passwort"); </code=java>

PostgreSQL

Um die Verbindung zu einer Postgres Datenbank herzustellen, muss diese auf einem erreichbaren Rechner laufen und sollte dieser Rechner nicht der gleiche sein wo auch das Programm ausgeführt wird, muss der Benutzer auch die Rechte haben von außerhalb auf die Datenbank zu zugreifen. Damit man diese jetzt in Java zu verwenden kann, muss wie anfangs schon erwähnt, der Treiber geladen und die Verbindung aufgebaut werden. <code=java> //laden der Treiberklasse Class.forName("org.postgresql.Driver"); //zurückgeben der neuen Verbindung Connection con = DriverManager.getConnection("jdbc:postgresql://HOST:PORT/Datenbank","Benutzer","Passwort"); </code=java> Optional lassen sich beim Verbindungsaufbau noch weitere Parameter angeben wie z.B. ob SSL verwendet werden soll.

Oracle

Um die Verbindung mit einer Oracle Datenbank herzustellen, muss diese auf einem erreichbaren Rechner laufen. <code=java> //laden der Treiberklasse Class.forName("oracle.jdbc.driver.OracleDriver"); //zurückgeben der neuen Verbindung Connection con = DriverManager.getConnection("jdbc:oracle:thin:@<host>:<port>:<DB>","Benutzer","Passwort"); </code=java>

MS SQL Server

Um die Verbindung mit einer MS SQL Datenbank herzustellen, muss diese auf einem erreichbaren Rechner laufen. Man kann für alle Systeme den Unix Treiber verwenden den Microsoft anbietet. <code=java> //laden der Treiberklasse Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); //zurückgeben der neuen Verbindung Connection con = DriverManager.getConnection("jdbc:sqlserver://<server>\\<instanz>;databaseName=<datenbank>","Benutzer","Passwort"); </code=java>

Wird der jTDS-Treiber verwendet, muss der Connection-String anders aussehen: <code=java> //laden der Treiberklasse Class.forName("net.sourceforge.jtds.jdbc.Driver"); //zurückgeben der neuen Verbindung Connection con = DriverManager.getConnection("jdbc:jtds:sqlserver://<server>\\<instanz>;databaseName=<datenbank>","Benutzer","Passwort"); </code=java>

Andere Datenbanken

Bei anderen Datenbanken läuft es genauso ab, nur muss man sich dann die Treibernamen aus den Handbüchern suchen, sowie die Art wie der Pfad für die Datenbank angegeben werden soll.


Mit der zurückgegebenen Connection kann man dann die Arbeiten mit der Datenbank beginnen.


Weblinks