1 / 18

JDBC

JDBC. -Java Database Connectivity-. 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. Übersicht.

shina
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 -Java Database Connectivity-

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

  3. Übersicht • Verbindung zur DB: Interface Connection • Anfragen formulieren: Statement • Ergebnisse auswerten: ResultSet • Metadaten über die DB JDBC

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

  5. 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) JDBC

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

  7. Statements • sind gewöhnliche SQL-Statements, die JDBC an die DB weiterleitet • erzeugt wird ein Statement über das Interface Connection Statement stmt = con.createStatement(); JDBC

  8. Beispiel - CREATE • Ausführung von stmt.execute( "CREATE TABLE coworkers( c_id int, name varchar(25))" ); • kein ';' am Ende des Statements! JDBC

  9. Beispiel - INSERT stmt.execute( "INSERT INTO coworkers VALUES (1, 'Herbert')" ); stmt.close(); JDBC

  10. 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)" ); JDBC

  11. 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(); JDBC

  12. Zugriff auf ResultSet • über die Methoden ResultSet.getXXX("<attrib>") • also getString(), getInt() stmt.executeQuery("SELECT c_id,name .. while(result.next()) { int c_id = result.getInt("c_id"); String name = result.getString("name"); JDBC

  13. 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 (?, ?)" ); JDBC

  14. 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(); JDBC

  15. getXXX-Methoden JDBC

  16. JDBC

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

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

More Related