slide1
Download
Skip this Video
Download Presentation
JDBC

Loading in 2 Seconds...

play fullscreen
1 / 18

JDBC - PowerPoint PPT Presentation


  • 94 Views
  • Uploaded on

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.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' JDBC' - shina


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
slide1

JDBC

-Java Database Connectivity-

slide2
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

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

ad