OOS16 Fol V18 Datenbankanschluss

Werbung
3-schichtige Informationssystem-Architektur
• plattformunabhängig
• beliebige Endgeräte
• Client als Applikation
bzw. als Applet
• plattformunabhängig
• objektorientierte Architektur
Server: Anwendungslogik
hier einfach Dateisystem
des PCs
jetzt: DB-Anschluss
© FH AACHEN UNIVERSITY OF APPLIED SCIENCES
strukturierte Daten
OOS
Prof. Dr. H. Faßbender
DB-Anschluss
10. Juni 2016 | 1
Java-Abbild von DB-Inhalten
<<class>>
User
Java
User u = new User();
name: String
email: String
password: String
u.setName(„Heinz Fassbender“)
u.setEmail(„[email protected]“)
u.setPassword(„geheim“)
…
Users
DB
name
email
password
Heinz Fassbender
[email protected]
geheim
…
…
…
Pro Zeile:
Ganze Tabelle:
© FH AACHEN UNIVERSITY OF APPLIED SCIENCES
1 Objekt
ResultSet der Objekte
OOS
Prof. Dr. H. Faßbender
DB-Anschluss
10. Juni 2016 | 2
Ablauf einer SQL-Anfrage
Anwendung
DataSource
getConnection()
<< create >>
Connection
Connection
createStatement()
<< create >>
Statement
Statement
executeQuery("SELECT name FROM users")
<< create >>
ResultSet
ResultSet
next()
true
getString("username")
username
next()
false
© FH AACHEN UNIVERSITY OF APPLIED SCIENCES
OOS
Prof. Dr. H. Faßbender
DB-Anschluss
10. Juni 2016 | 3
Absetzen von SQL-Statements allg.
DataSource dataSource = …
Connection connection;
try {
//siehe Folie 6
connection = dataSource.getConnection();
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(„SQL“);
while(resultSet.next()) {
/* ResultSet verarbeiten */
}
} finally {
if(connection != null) { connection.close(); }
}
© FH AACHEN UNIVERSITY OF APPLIED SCIENCES
OOS
Prof. Dr. H. Faßbender
DB-Anschluss
10. Juni 2016 | 4
Absetzen von SQL-Statements speziell
/* Namen aller gespeicherten Benutzer ermitteln */
String query = „SELECT name FROM users“;
ResultSet resultSet = statement.executeQuery(query)
users
name
email
password
Heinz Fassbender
Heinz Fassbender
fassbender
geheim
Till Dorschel
Till Dorschel
…
geheimer
resultSet (name)
query
List<String> names = new ArrayList<String>();
while(resultSet.next()) {
String name = resultSet.getString(„name“);
names.add(name);
}
names: „Heinz Fassbender“; „Till Dorschel“
© FH AACHEN UNIVERSITY OF APPLIED SCIENCES
OOS
Prof. Dr. H. Faßbender
DB-Anschluss
10. Juni 2016 | 5
Erstellung einer DataSource
• Datenquelle zentrale Schnittstelle für Connection-Handling
• Konfig wichtig, da sonst Performance Engpass
• Verwendung von „pooled“ DataSource
• nicht für jede Anfrage neue DB-Verbindung
• sondern Verwaltung eines Pools von DB-Verbindungen
• hier folgende primitive Verbindung als DataSource durch
"jdbcDriver" für die HSQL-Datenbank
BasicDataSource dataSource = new BasicDataSource();
dataSource.setDriverClassName(jdbcDriver.class.getName());
dataSource.setUrl("jdbc:hsqldb:mem:TestSpeicherDB");
dataSource.setUsername("sa");
dataSource.setPassword("");
© FH AACHEN UNIVERSITY OF APPLIED SCIENCES
OOS
Prof. Dr. H. Faßbender
DB-Anschluss
10. Juni 2016 | 6
Herunterladen