Datenbankverbindung (Java): Unterschied zwischen den Versionen
K (→Weblinks) |
K (→Weblinks) |
||
(23 dazwischenliegende Versionen von 5 Benutzern werden nicht angezeigt) | |||
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 | + | Um eine [[Datenbank]] mit [[Java]] zu verwenden, muss man immer nach dem gleichen Schema vorgehen: |
+ | <div style="background-color: lightcyan; border:2px solid; border-color: lightblue; width: 300px; padding: 2em 1em 2em 1em; line-height: 2em;"> | ||
# Treiber laden | # Treiber laden | ||
# Verbindung aufbauen | # Verbindung aufbauen | ||
# Querys ausführen | # Querys ausführen | ||
# Verbindung schließen | # Verbindung schließen | ||
− | + | </div> | |
+ | '''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]]. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
==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. |
− | < | + | <syntaxhighlight lang="java"> |
//laden der Treiberklasse | //laden der Treiberklasse | ||
Class.forName("com.mysql.jdbc.Driver"); | Class.forName("com.mysql.jdbc.Driver"); | ||
− | //zurückgeben der neuen | + | //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"); | ||
− | </ | + | </syntaxhighlight> |
− | Die Portangabe muss man nicht machen solange der [[Server]] auf | + | 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 | + | 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. |
− | < | + | <syntaxhighlight lang="java"> |
// laden des Datenbanktreibers | // laden des Datenbanktreibers | ||
Class.forName("org.hsqldb.jdbcDriver"); | Class.forName("org.hsqldb.jdbcDriver"); | ||
// Aufbauen der Verbindung zu der Datenbank | // Aufbauen der Verbindung zu der Datenbank | ||
Connection con = DriverManager.getConnection("jdbc:hsqldb:file:PfadzurDatenbank","Benutzer","Passwort"); | Connection con = DriverManager.getConnection("jdbc:hsqldb:file:PfadzurDatenbank","Benutzer","Passwort"); | ||
− | </ | + | </syntaxhighlight> |
− | Der Pfad kann | + | 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== | ==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. |
− | < | + | <syntaxhighlight lang="java"> |
//laden der Treiberklasse | //laden der Treiberklasse | ||
Class.forName("org.firebirdsql.jdbc.FBDriver"); | Class.forName("org.firebirdsql.jdbc.FBDriver"); | ||
− | //zurückgeben der neuen | + | //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"); | ||
− | </ | + | </syntaxhighlight> |
− | 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: |
− | < | + | <syntaxhighlight lang="java"> |
Class.forName("org.h2.Driver"); | Class.forName("org.h2.Driver"); | ||
Connection conn = DriverManager.getConnection("jdbc:h2:PfadzurDatenbank", "Benutzer", "Passwort"); | Connection conn = DriverManager.getConnection("jdbc:h2:PfadzurDatenbank", "Benutzer", "Passwort"); | ||
− | </ | + | </syntaxhighlight> |
==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. |
− | < | + | <syntaxhighlight lang="java"> |
//laden der Treiberklasse | //laden der Treiberklasse | ||
Class.forName("org.postgresql.Driver"); | Class.forName("org.postgresql.Driver"); | ||
− | //zurückgeben der neuen | + | //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"); | ||
− | </ | + | </syntaxhighlight> |
Optional lassen sich beim Verbindungsaufbau noch weitere Parameter angeben wie z.B. ob SSL verwendet werden soll. | Optional lassen sich beim Verbindungsaufbau noch weitere Parameter angeben wie z.B. ob SSL verwendet werden soll. | ||
==Oracle== | ==Oracle== | ||
Um die Verbindung mit einer Oracle Datenbank herzustellen, muss diese auf einem erreichbaren Rechner laufen. | Um die Verbindung mit einer Oracle Datenbank herzustellen, muss diese auf einem erreichbaren Rechner laufen. | ||
− | < | + | <syntaxhighlight lang="java"> |
//laden der Treiberklasse | //laden der Treiberklasse | ||
Class.forName("oracle.jdbc.driver.OracleDriver"); | Class.forName("oracle.jdbc.driver.OracleDriver"); | ||
− | //zurückgeben der neuen | + | //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"); | ||
− | </ | + | </syntaxhighlight> |
+ | |||
+ | ==DB2== | ||
+ | Um die Verbindung mit einer IBM DB2 Datenbank herzustellen, muss diese auf einem erreichbaren Rechner laufen. | ||
+ | <syntaxhighlight lang="java"> | ||
+ | //laden eines Typ2-Treibers | ||
+ | Class.forName("COM.ibm.db2.jdbc.app.DB2Driver").newInstance(); | ||
+ | |||
+ | //oder des Universaltreibers | ||
+ | Class.forName("com.ibm.db2.jcc.DB2Driver"); | ||
+ | |||
+ | //zurückgeben der neuen Verbindung | ||
+ | Connection con = DriverManager.getConnection("jdbc:db2:Datenbank","Benutzer","Passwort"); | ||
+ | </syntaxhighlight> | ||
==MS SQL Server== | ==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. | 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. | ||
− | < | + | <syntaxhighlight lang="java"> |
//laden der Treiberklasse | //laden der Treiberklasse | ||
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); | Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); | ||
− | //zurückgeben der neuen | + | //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"); | ||
− | </ | + | </syntaxhighlight> |
+ | |||
+ | Wird der jTDS-Treiber verwendet, muss der Connection-String anders aussehen: | ||
+ | <syntaxhighlight lang="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"); | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ==JavaDB/Derby== | ||
+ | <syntaxhighlight lang="java"> | ||
+ | private void setDBSystemDir() { | ||
+ | // Hier wird das Systemverzeichnis für die Datenbank angegeben: /.addressbook/ | ||
+ | String userHomeDir = System.getProperty("user.home", "."); | ||
+ | String systemDir = userHomeDir + "/.addressbook"; | ||
+ | // Festlegen des Systemverzeichnisses für die Datenbank | ||
+ | System.setProperty("derby.system.home", systemDir); | ||
+ | } | ||
+ | ... | ||
+ | </syntaxhighlight> | ||
+ | Der Connection-String sieht dann so aus: | ||
+ | <syntaxhighlight lang="java">Connection dbConnection = null; | ||
+ | String strUrl = "jdbc:derby:DefaultAddressBook;user=dbuser;password=dbuserpwd"; | ||
+ | try { | ||
+ | dbConnection = DriverManager.getConnection(strUrl); | ||
+ | } | ||
+ | catch (SQLException sqle) { | ||
+ | sqle.printStackTrace(); | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ==Access Datenbank== | ||
+ | [[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]] -> Verwaltung -> 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. | ||
+ | <syntaxhighlight lang="java"> | ||
+ | //laden der Treiberklasse | ||
+ | Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); | ||
+ | //zurückgeben der neuen Verbindung | ||
+ | Connection con = DriverManager.getConnection("jdbc:odbc:Datenbankname","Benutzer","Passwort"); | ||
+ | </syntaxhighlight> | ||
+ | In dem Fall, in welchem die Access-Datenbankdatei nicht mit einem Passwort geschützt wurde, sind die Werte für Benutzer und Passwort Leerstrings (""). | ||
+ | Wenn die Datenbankdatei mit einem Passwort geschützt wurde, ist der Benutzername gleich dem Passwort. | ||
+ | |||
+ | ===Variante ohne Registrierung der ODBC Datenquellen=== | ||
+ | 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: | ||
+ | <syntaxhighlight lang="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=" + filename; | ||
+ | |||
+ | Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); | ||
+ | con = DriverManager.getConnection(url, user, passwd); | ||
+ | |||
+ | return true; | ||
+ | }</syntaxhighlight> | ||
==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 | + | Mit der zurückgegebenen Connection kann man dann die [[Datenbankabfragen_(Java)|Arbeiten]] mit der Datenbank beginnen. |
Zeile 114: | Zeile 162: | ||
*[http://www.hsqldb.org HSQLDB] | *[http://www.hsqldb.org HSQLDB] | ||
*[http://www.firebird-datenbank.de Firebird] | *[http://www.firebird-datenbank.de Firebird] | ||
− | *[http:// | + | *[http://products.office.com/de-de/access Access] |
*[http://www.h2database.com/html/frame.html H2 Database] | *[http://www.h2database.com/html/frame.html H2 Database] | ||
*[http://www.postgresql.org/ PostgreSQL] | *[http://www.postgresql.org/ PostgreSQL] | ||
*[http://db.apache.org/derby/ Derby] | *[http://db.apache.org/derby/ Derby] | ||
− | *[http:// | + | *[http://dev.mysql.com/ MySQL] |
− | *[http://www.oracle.com/ | + | *[http://www.oracle.com/database/ Oracle] |
+ | *[http://www.microsoft.com/sql/experience/?loc=de Microsoft SQL Server] | ||
+ | *[http://jtds.sourceforge.net jTDS] | ||
+ | |||
+ | Defekte Links bitte [https://forum.byte-welt.net/c/byte-welt-projekte-projects/wiki melden] | ||
[[Kategorie:Java]] | [[Kategorie:Java]] | ||
Zeile 125: | Zeile 177: | ||
[[Kategorie:Tutorials (SQL)]] | [[Kategorie:Tutorials (SQL)]] | ||
[[Kategorie:Datenbanken]] | [[Kategorie:Datenbanken]] | ||
+ | [[Kategorie:Tutorials (Datenbanken)]] |
Aktuelle Version vom 15. November 2018, 14:06 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:
- Treiber laden
- Verbindung aufbauen
- Querys ausführen
- 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.
Inhaltsverzeichnis
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.
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.
//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");
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.
// laden des Datenbanktreibers
Class.forName("org.hsqldb.jdbcDriver");
// Aufbauen der Verbindung zu der Datenbank
Connection con = DriverManager.getConnection("jdbc:hsqldb:file:PfadzurDatenbank","Benutzer","Passwort");
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.
//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");
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:
Class.forName("org.h2.Driver");
Connection conn = DriverManager.getConnection("jdbc:h2:PfadzurDatenbank", "Benutzer", "Passwort");
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.
//laden der Treiberklasse
Class.forName("org.postgresql.Driver");
//zurückgeben der neuen Verbindung
Connection con = DriverManager.getConnection("jdbc:postgresql://HOST:PORT/Datenbank","Benutzer","Passwort");
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.
//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");
DB2
Um die Verbindung mit einer IBM DB2 Datenbank herzustellen, muss diese auf einem erreichbaren Rechner laufen.
//laden eines Typ2-Treibers
Class.forName("COM.ibm.db2.jdbc.app.DB2Driver").newInstance();
//oder des Universaltreibers
Class.forName("com.ibm.db2.jcc.DB2Driver");
//zurückgeben der neuen Verbindung
Connection con = DriverManager.getConnection("jdbc:db2:Datenbank","Benutzer","Passwort");
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.
//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");
Wird der jTDS-Treiber verwendet, muss der Connection-String anders aussehen:
//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");
JavaDB/Derby
private void setDBSystemDir() {
// Hier wird das Systemverzeichnis für die Datenbank angegeben: /.addressbook/
String userHomeDir = System.getProperty("user.home", ".");
String systemDir = userHomeDir + "/.addressbook";
// Festlegen des Systemverzeichnisses für die Datenbank
System.setProperty("derby.system.home", systemDir);
}
...
Der Connection-String sieht dann so aus:
Connection dbConnection = null;
String strUrl = "jdbc:derby:DefaultAddressBook;user=dbuser;password=dbuserpwd";
try {
dbConnection = DriverManager.getConnection(strUrl);
}
catch (SQLException sqle) {
sqle.printStackTrace();
}
Access Datenbank
Um die Verbindung zu einer Access Datenbank herzustellen, muss man diese erst mal in Windows eingebunden haben, dies geschieht über die Systemsteuerung -> Verwaltung -> 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.
//laden der Treiberklasse
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//zurückgeben der neuen Verbindung
Connection con = DriverManager.getConnection("jdbc:odbc:Datenbankname","Benutzer","Passwort");
In dem Fall, in welchem die Access-Datenbankdatei nicht mit einem Passwort geschützt wurde, sind die Werte für Benutzer und Passwort Leerstrings (""). Wenn die Datenbankdatei mit einem Passwort geschützt wurde, ist der Benutzername gleich dem Passwort.
Variante ohne Registrierung der ODBC Datenquellen
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:
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=" + filename;
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection(url, user, passwd);
return true;
}
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
Defekte Links bitte melden