JDBC
This presentation is the property of its rightful owner.
Sponsored Links
1 / 18

JDBC PowerPoint PPT Presentation


  • 71 Views
  • Uploaded on
  • Presentation posted in: General

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.

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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Jdbc

JDBC

-Java Database Connectivity-


Jdbc

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


Bersicht

Übersicht

  • Verbindung zur DB: Interface Connection

  • Anfragen formulieren: Statement

  • Ergebnisse auswerten: ResultSet

  • Metadaten über die DB

JDBC


Jdbc treiber

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


Jdbc treiber1

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


Verbindung zur db

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


Statements

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


Beispiel create

Beispiel - CREATE

  • Ausführung von

    stmt.execute(

    "CREATE TABLE coworkers(

    c_id int,

    name varchar(25))"

    );

  • kein ';' am Ende des Statements!

JDBC


Beispiel insert

Beispiel - INSERT

stmt.execute(

"INSERT INTO coworkers

VALUES (1, 'Herbert')"

);

stmt.close();

JDBC


Queries

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


Resultset

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


Zugriff auf resultset

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


Prepared statements

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


Prepared statements1

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


Get xxx methoden

getXXX-Methoden

JDBC


Jdbc

JDBC


Sqlexceptions

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


Sql exceptions 2

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


  • Login