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 gleiche Schema vorgehen:
+
Um eine [[Datenbank]] mit [[Java]] zu verwenden, muss man immer nach dem gleichen Schema vorgehen:
 
# Treiber laden
 
# Treiber laden
 
# Verbindung aufbauen
 
# Verbindung aufbauen
Zeile 10: Zeile 10:
  
 
==Access Datenbank==
 
==Access Datenbank==
[[Bild:ODBC-Datenquellen-Administr.gif|thumb|ODBC-Datenquellen-Administrator]]Um die Verbindung zu einer [[Access]] [[Datenbank]] herzustellen muss man diese erstmal in [[Windows]] eingebunden haben, dies geschied über die [[Systemsteuerung]] <math>\rightarrow</math> Verwaltung <math>\rightarrow</math> Datenquellen (ODBC) hier muss die [[Datenbank]] jetzt eingerichtet werden.
+
[[Bild:ODBC-Datenquellen-Administr.gif|thumb|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.
 
Um diese jetzt in [[Java]] zu verwenden, muss wie anfangs schon erwähnt der [[Treiber]] geladen und die Verbindung aufgebaut werden.
 
<code=java>
 
<code=java>
 
//laden der Treiberklasse
 
//laden der Treiberklasse
 
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
 
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//zurückgeben der neuen verbindung
+
//zurückgeben der neuen Verbindung
 
Connection con = DriverManager.getConnection("jdbc:odbc:Datenbankname","Benutzer","Passwort");
 
Connection con = DriverManager.getConnection("jdbc:odbc:Datenbankname","Benutzer","Passwort");
 
</code=java>
 
</code=java>
Zeile 37: Zeile 37:
  
 
==MySQL Datenbank==
 
==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 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.
+
Um diese jetzt in [[Java]] zu verwenden, muss wie anfangs schon erwähnt, der [[Treiber]] geladen und die Verbindung aufgebaut werden.
 
<code=java>
 
<code=java>
 
//laden der Treiberklasse
 
//laden der Treiberklasse
 
Class.forName("com.mysql.jdbc.Driver");
 
Class.forName("com.mysql.jdbc.Driver");
//zurückgeben der neuen verbindung
+
//zurückgeben der neuen Verbindung
 
Connection con = DriverManager.getConnection("jdbc:mysql://Host:Port/Datenbank","Benutzer","Passwort");
 
Connection con = DriverManager.getConnection("jdbc:mysql://Host:Port/Datenbank","Benutzer","Passwort");
 
</code=java>
 
</code=java>
Die Portangabe muss man nicht machen solange der [[Server]] auf den standard [[MySQL]] [[Port]] 3306 läuft. Bei der Angabe der [[Datenbank]] wird automatisch diese [[Datenbank]] für den Gebrauch ausgewählt so das man diese nicht extra auswählen muss.
+
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==
 
==HSQLDB Datenbank==
Um die Verbindung mit einer [[HSQLDB]] [[Datenbank]] aufzubauen hat man mehere 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 vorrausgesetzt das die hsqldb.jar im [[Classpath]] ist.
+
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>
 
<code=java>
 
// laden des Datenbanktreibers
 
// laden des Datenbanktreibers
Zeile 55: Zeile 55:
 
Connection con = DriverManager.getConnection("jdbc:hsqldb:file:PfadzurDatenbank","Benutzer","Passwort");
 
Connection con = DriverManager.getConnection("jdbc:hsqldb:file:PfadzurDatenbank","Benutzer","Passwort");
 
</code=java>
 
</code=java>
Der Pfad kann Realtiv oder auch Absolut angegeben werden, außerdem können danach verschiedene Optionen folgen. Der Benutzer ist standardmäßig "sa" und ein Passwort ist nicht vergeben.
+
Der Pfad kann Relativ oder auch Absolut angegeben werden, außerdem können danach verschiedene Optionen folgen. Der Benutzer ist standardmäßig "sa" und ein Passwort ist nicht vergeben.
  
 
==Firebird Datenbank==
 
==Firebird Datenbank==
 
Um die Verbindung zu einer [[Firebird]] [[Datenbank]] herzustellen muss der [[Server]] auf einem erreichbaren Rechner installiert sein.
 
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.
+
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>
 
<code=java>
 
//laden der Treiberklasse
 
//laden der Treiberklasse
 
Class.forName("org.firebirdsql.jdbc.FBDriver");
 
Class.forName("org.firebirdsql.jdbc.FBDriver");
//zurückgeben der neuen verbindung
+
//zurückgeben der neuen Verbindung
 
Connection con = DriverManager.getConnection("jdbc:firebirdsql:HOST/PORT:PfadzuDatenbank","Benutzer","Passwort");
 
Connection con = DriverManager.getConnection("jdbc:firebirdsql:HOST/PORT:PfadzuDatenbank","Benutzer","Passwort");
 
</code=java>
 
</code=java>
Der Pfad zu der [[Datenbank]] muss immer Absolut angegeben werden damit die [[Datenbank]] gefunden wird.
+
Der Pfad zu der [[Datenbank]] muss immer Absolut angegeben werden, damit die [[Datenbank]] gefunden wird.
  
 
==H2 Database==
 
==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:
+
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>
 
<code=java>
 
Class.forName("org.h2.Driver");
 
Class.forName("org.h2.Driver");
Zeile 76: Zeile 76:
  
 
==PostgreSQL==
 
==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.
+
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.
+
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>
 
<code=java>
 
//laden der Treiberklasse
 
//laden der Treiberklasse
 
Class.forName("org.postgresql.Driver");
 
Class.forName("org.postgresql.Driver");
//zurückgeben der neuen verbindung
+
//zurückgeben der neuen Verbindung
 
Connection con = DriverManager.getConnection("jdbc:postgresql://HOST:PORT/Datenbank","Benutzer","Passwort");
 
Connection con = DriverManager.getConnection("jdbc:postgresql://HOST:PORT/Datenbank","Benutzer","Passwort");
 
</code=java>
 
</code=java>
Zeile 91: Zeile 91:
 
//laden der Treiberklasse
 
//laden der Treiberklasse
 
Class.forName("oracle.jdbc.driver.OracleDriver");
 
Class.forName("oracle.jdbc.driver.OracleDriver");
//zurückgeben der neuen verbindung
+
//zurückgeben der neuen Verbindung
 
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@<host>:<port>:<DB>","Benutzer","Passwort");
 
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@<host>:<port>:<DB>","Benutzer","Passwort");
 
</code=java>
 
</code=java>
Zeile 100: Zeile 100:
 
//laden der Treiberklasse
 
//laden der Treiberklasse
 
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
 
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
//zurückgeben der neuen verbindung
+
//zurückgeben der neuen Verbindung
 
Connection con = DriverManager.getConnection("jdbc:sqlserver://<server>\\<instanz>;databaseName=<datenbank>","Benutzer","Passwort");
 
Connection con = DriverManager.getConnection("jdbc:sqlserver://<server>\\<instanz>;databaseName=<datenbank>","Benutzer","Passwort");
 
</code=java>
 
</code=java>
  
Wird der jTDS-Treiber verwendet muss der Connection-String anders aussehen:
+
Wird der jTDS-Treiber verwendet, muss der Connection-String anders aussehen:
 
<code=java>
 
<code=java>
 
//laden der Treiberklasse
 
//laden der Treiberklasse
 
Class.forName("net.sourceforge.jtds.jdbc.Driver");
 
Class.forName("net.sourceforge.jtds.jdbc.Driver");
//zurückgeben der neuen verbindung
+
//zurückgeben der neuen Verbindung
 
Connection con = DriverManager.getConnection("jdbc:jtds:sqlserver://<server>\\<instanz>;databaseName=<datenbank>","Benutzer","Passwort");
 
Connection con = DriverManager.getConnection("jdbc:jtds:sqlserver://<server>\\<instanz>;databaseName=<datenbank>","Benutzer","Passwort");
 
</code=java>
 
</code=java>
  
 
==Andere Datenbanken==
 
==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.
+
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ückgegeben Connection kann man dann die [[Datenbankabfragen_(Java)|Arbeiten]] mit der Datenbank beginnen.
+
Mit der zurückgegebenen Connection kann man dann die [[Datenbankabfragen_(Java)|Arbeiten]] mit der Datenbank beginnen.
  
  

Version vom 18. Juni 2009, 13:52 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

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. 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