1 / 12

JDBC

JDBC. JDBC : "Java Database Connectivity" JDBC stellt eine standarisierte Methode zum Zugriff auf Datenbanken aus Java-Programmen zur Verfügung. Einige Datenbanken unterstützen den JDBC-Standard direkt.

helene
Download Presentation

JDBC

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. JDBC EDV2 - 03 - JDBC

  2. JDBC : "Java Database Connectivity" • JDBC stellt eine standarisierte Methode zum Zugriff auf Datenbanken aus Java-Programmen zur Verfügung. • Einige Datenbanken unterstützen den JDBC-Standard direkt. • Viele andere unterstützen ODBC "Open Database Connectivity". Diese können übereinen zu Java gehörigen JDBC-ODBC-Umsetzer angesprochen werden. • Damit können fast alle existierenden Datenbanken direkt oder indirekt angesprochen werden. • JDBC enthält Möglichkeiten: • Verbindungen zu Datenbanken zu öffnen und zu schließen, • SQL-Anweisungen an Datenbanken zu schicken und • die Antworten entgegenzunehmen und deren Auswertung im Java-Programm zu ermöglichen. EDV2 - 03 - JDBC

  3. JDBC baut vollständig auf SQL auf. SQL "Standard Query Language". Die Kommunikation zwischen dem Java-Programm und der Datenbank erfolgt über SQL-Anweisungen. Diese werden als Text an die Datenbank geschickt, die daraufhin als Antwort die Ergebnisse zurückschickt.  Die SQL-Anweisungen werden nicht vom Java-Compiler auf Korrektheit geprüft. Fehler können also erst durch die Datenbank festgestellt werden. • Eine weitere Möglichkeit aus Java Datenbanken abzufragen und zu bearbeiten ist SQLJ von IBM, Oracle, Sybase, Informix u.a. • SQLJ baut ebenfalls auf SQL auf. Die Anweisungen werden jedoch schon in Java geprüft. Fehler können also schon von Java erkannt werden. EDV2 - 03 - JDBC

  4. 1. Erstellen einer Datenbank • Zunächst muss die Datenbank aufgebaut werden. Dazu müssen geeignete Programme genutzt werde, z.B. Access, dBase, Oracle, Sybase, Informix, DB2, Excel u.s.w. • Unser Beispiel ist eine Access-Datenbank mit folgenden Tabellen: • Studenten • MatrikelNr, Long Integer, Primärschlüssel • Name, Text • Vorname, Text • Veranstaltungen • VeranstaltungsNr, Long Integer, Primärschlüssel • Titel, Text • Kurzbezeichnung, Text • Semester, Text • Art, Text • Stunden, Integer EDV2 - 03 - JDBC

  5. Studenten Belegungen Veranstaltungen MatrikelNr id VeranstaltungsNr Name MatrikelNr Titel Vorname VeranstaltungsNr Kurzbezeichnung Semester Art Stunden • Belegungen • Id, Long Integer, Primärschlüssel • MatrikelNr, Referenz auf Tabelle Studenten • VeranstaltungsNr, Referenz auf Tabelle Veranstaltungen EDV2 - 03 - JDBC

  6. 2. DB in ODBC registrieren • In der Systemsteuerung ODBC bzw. ODBC32 bzw. ODBC-datenquellen öffnen. • Es können ODBC-Quellen registriert werden. Dabei können die Datenbanken so registriert werden, dass nur der Nutzer selber auf sie zugreifen kann (Benutzer-DSN) oder so dass alle Nutzer auch über das Netz darauf zugreifen können (system-DSN). • Dabei können u.A. auch Namen und Passworte für den Zugriff festgelegt werden. • Wichtig: Datenquellenname ist der Name unter dem von Java auf die Datenbank zugegriffen wird. • Vorteile: • Es existiert ein einheitlicher Zugriff zu allen Datenbanken. • Das Java-Programm muss keine Informationen über die konkrete Datenbankdatei haben. • Ohne Änderung des des Java-Programms kann die Datenbank (Art, Ort) geändert werden. EDV2 - 03 - JDBC

  7. 3. Treiber in Java laden • Um vom Java-Programm auf eine Datenbank zugreifen zu können, muss ein passender Treiber geladen werden. • Welcher Treiber passend ist hängt von der Datenbank und dem Betriebssystem ab. • In Windows gibt es ODBC-Treiber für alle Datenbanken. Also kann in der Regel der JDBC-ODBC-Treiber von SUN verwendet werden: sun.jdbc.odbc.JdbcOdbcDriver • Der Treiber braucht nur ein mal geladen zu werden und steht dann immer zur Verfügung.  Laden erfolgt in einem statischen Block einer Klasse. • Laden des Treibers erfolgt z.B. mit Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); • Ausnahme ClassNotFoundException muss abgefangen werden. EDV2 - 03 - JDBC

  8. public class StudentenDB { static { String driv = "sun.jdbc.odbc.JdbcOdbcDriver"; try { Class.forName(driv); } catch (ClassNotFoundException cnfe) { System.err.println(driv+" nicht gefunden!"); System.exit(1); } } } EDV2 - 03 - JDBC

  9. 4. Öffnen der Datenbank • Zum Herstellen der Verbindung zwischen der Datenbank und dem Java-Programm stellt die Klasse DriverManager die Methode getConnection zur Verfügung. • public static Connection getConnection(String url) • Mit Hilfe von url wird dir zu öffnende Verbindung beschrieben. Die genaue Form hängt vom Treiber und von der Datenbank ab. url = protocol:subprotocol:database • protocol = jdbc • subprotocol = odbc • database = StudentenDatenbank • Andere Formen von getConnection erlauben die Angabe von Namen und Passwort. • Die Herstellung der Verbindung muss vor jedem erneuen Zugriff geschehen. Z.B. in eine Konstruktor. • Die Datenbank wird geschlossen, indem die close-Methode der Verbindung aufgerufen wird. EDV2 - 03 - JDBC

  10. private Connection dbConn = null; private String connString = "jdbc:odbc:StudentenDatenbank"; public StudentenDB() { try { dbConn = DriverManager.getConnection(connString); } catch (SQLException sqle) { System.err.println("Fehler beim Öffnen der Verbindung "+connString); System.exit(2); } } public void close() { try { dbConn.close(); } catch (SQLException sqle) { System.err.println("Fehler beim Schließen der Verbindung "+connString); System.exit(3); } } EDV2 - 03 - JDBC

  11. 5. Datenbank abfragen • Abfragen erfolgen grundsätzlich mit Hilfe von SQL-Anweisungen. • SQL-Anweisungen werden durch die execute-Methode eines Statement-Objektes ausgeführt. • Durch die erfolgreiche Ausführung einer SQL-Anweisung wird ein ResultSet-Objekt erzeugt, das die Ergebnisse der Abfrage in Form einer Tabelle enthält. • Durch die next-Methode des ResultSet-Objektes kann durch die Zeilen der Ergebnistabelle gewandert werden. • Mit Hilfe der getXXX-Methoden des ResultSet-Objektes können die Elemente der Zeilen abgefragt werden. • Mit Hilfe der Klasse ResultSetMetaData können Informationen über die Spalten der Tabelle (Name, Datentyp, Schreibbarkeit u.s.w.) abgefragt werden. EDV2 - 03 - JDBC

  12. public void printContent(String table) { try { System.out.println(">>>>>>>>>>>>> "+table +" >>>>>>>>>>>>>"); Statement pC = dbConn.createStatement(); pC.execute("SELECT * FROM "+table); ResultSet res = pC.getResultSet(); ResultSetMetaData resMD = res.getMetaData(); int col = resMD.getColumnCount(); for (int i=1;i<=col;i++ ) System.out.print(resMD.getColumnLabel(i)+"\t"); System.out.println(); while (res.next()) { for (int i=1;i<=col;i++ ) System.out.print(res.getString(i)+"\t"); System.out.println(); } res.close(); } catch (SQLException sqle) { System.err.println("Fehler beim Lesen der Verbindung "+connString); System.exit(4); } } EDV2 - 03 - JDBC

More Related