Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Tadday Weisenbach Geändert vor über 11 Jahren
1
JDBC -Java Database Connectivity-
2
15./22. April 2004JDBC2 JDBC.... verbindet Java-Programme mit SQL-basierten Datenbanken.. liefert eine generische SQL-API für eine Vielzahl von DB-Systemen.. ist für Programmierer (fast) transparent.. findet sich im Package java.sql
3
15./22. April 2004JDBC3 Übersicht Verbindung zur DB: Interface Connection Anfragen formulieren: Statement Ergebnisse auswerten: ResultSet Metadaten über die DB
4
15./22. April 2004JDBC4 JDBC-Treiber zunächst wird ein DB-spezifischer JDBC-Treiber geladen DriverManager.registerDriver(new oracle.jdbc.OracleDriver()); DB-Systeme liefern i.d.R. passende JDBC-Treiber mit, wenige sind frei verfügbar
5
15./22. April 2004JDBC5 JDBC-Treiber Einbindung des Treibers auch zur Laufzeit möglich > java -Djdbc.drivers= oracle.jdbc.OracleDriver myClass für manche Systeme gibt es nur ODBC-Treiber, aber zum Glück auch die JDBC-ODBC-Bridge
6
15./22. April 2004JDBC6 Verbindung zur DB die eigentliche Verbindung stellt die Klasse DriverManager her: Connection con = DriverManager.getConnection(URL, username, password); URL = JDBC-Connect-String sämtliche Anfragen an die DB behandelt dann die Instanz des Interfaces Connection URL = jdbc:oracle:thin:@141.20.27.142:1521:LEHRE
7
15./22. April 2004JDBC7 Statements sind gewöhnliche SQL-Statements, die JDBC an die DB weiterleitet erzeugt wird ein Statement über das Interface Connection Statement stmt = con.createStatement();
8
15./22. April 2004JDBC8 Beispiel - CREATE Ausführung von stmt.execute( "CREATE TABLE coworkers( c_id int, name varchar(25))" ); kein ' ; ' am Ende des Statements!
9
15./22. April 2004JDBC9 Beispiel - INSERT stmt.execute( "INSERT INTO coworkers VALUES (1, 'Herbert')" ); stmt.close();
10
15./22. April 2004JDBC10 Queries Ausführung von SELECT-Statements über Statement.executeQuery(), was ein Objekt des Interfaces ResultSet erzeugt ResultSet result = stmt.executeQuery( "SELECT c_id, name FROM coworkers ORDER BY c_id)" );
11
15./22. April 2004JDBC11 ResultSet zurückgelieferte Tupel nimmt eine Instanz von ResultSet auf die Ergebnisse werden tupelweise durchlaufen über die Methode result.next(); bereits das erste Tupel bedarf des Einstiegs mit result.next();
12
15./22. April 2004JDBC12 Zugriff auf ResultSet über die Methoden ResultSet.getXXX(" ") also getString(), getInt() stmt.executeQuery("SELECT c_id,name.. while(result.next()) { int c_id = result.getInt("c_id"); String name = result.getString("name");
13
15./22. April 2004JDBC13 Prepared Statements für mehrfache Abarbeitung und wenn die DB vorbereitete Anweisungen unterstützt anstelle von Statement PreparedStatement pstmt = con.prepareStatement( "INSERT INTO coworkers (c_id, name) VALUES (?, ?)" );
14
15./22. April 2004JDBC14 Prepared Statements {LOOP} // prepare tuples: // integer as 1st attribute: pstmt.setInt(1, anInt); // string as 2nd attribute: pstmt.setString(2, aString); // execute prepared statement pstmt.execute(); {POOL} pstmt.close();
15
15./22. April 2004JDBC15 getXXX-Methoden get -MethodeSQL-Typ getInt INTEGER getString CHAR, VARCHAR getLong BIG INT getFloat REAL getDouble FLOAT getBoolean BIT getDate, getTime DATE, TIME getInt INTEGER getObject jeder Typ
16
15./22. April 2004JDBC16
17
15./22. April 2004JDBC17 SQLExceptions "Geschlossene Anweisung" –Wo? Statement.execute() –Was? Es wird auf ein Instanz von Statement zugegriffen, die zuvor mit Statement.close() geschlossen wurde –Und jetzt? Erst später schließen oder neu instanziieren
18
15./22. April 2004JDBC18 SQL-Exceptions 2 "ORA-00001: Verstoß gegen Eindeutigkeit" –Wo? Statement.execute("INSERT.."); –Was? Einfügen bereits vorhandener Werte in eine als unique/primary key deklarierte Spalte –Und jetzt? Altes Tupel überschreiben oder anderer Wert...
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.