Name - FH Aachen
Name - FH Aachen
Name - FH Aachen
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
3-schichtige Informationssystem-Architektur<br />
• plattformunabhängig<br />
• beliebige Endgeräte<br />
• Client als Applikation<br />
bzw. als Applet<br />
hier einfach Dateisystem<br />
des PCs<br />
jetzt: DB-Anschluss<br />
OOS<br />
Prof. Dr. H. Faßbender<br />
DB-Anschluss 1<br />
• plattformunabhängig<br />
• objektorientierte Architektur Server: Anwendungslogik<br />
strukturierte Daten
Java-Abbild von DB-Inhalten<br />
Java<br />
DB<br />
name: String<br />
email: String<br />
password: String<br />
…<br />
users<br />
<br />
User<br />
OOS<br />
User u = new User();<br />
Prof. Dr. H. Faßbender<br />
DB-Anschluss 2<br />
u.set<strong>Name</strong>(„Heinz Fassbender“)<br />
u.setEmail(„fassbender@fh-aachen.de“)<br />
u.setPassword(„geheimer“)<br />
name email password<br />
Heinz Fassbender fassbender@fh-aachen.de geheim<br />
… … …
Ablauf einer SQL-Anfrage<br />
Anwendung DataSource<br />
getConnection()<br />
Connection<br />
createStatement()<br />
Statement<br />
><br />
Connection<br />
><br />
executeQuery("SELECT name FROM users")<br />
ResultSet<br />
next()<br />
true<br />
getString("username")<br />
username<br />
next()<br />
false<br />
Statement<br />
><br />
OOS<br />
Prof. Dr. H. Faßbender<br />
DB-Anschluss 3<br />
ResultSet
Absetzen von SQL-Statements allg.<br />
OOS<br />
Prof. Dr. H. Faßbender<br />
DB-Anschluss 4<br />
DataSource dataSource = … //siehe Folie 6<br />
Connection connection;<br />
try {<br />
connection = dataSource.getConnection();<br />
Statement statement = connection.createStatement();<br />
ResultSet resultSet = statement.executeQuery(„SQL“);<br />
while(resultSet.next()) {<br />
}<br />
/* ResultSet verarbeiten */<br />
} finally {<br />
}<br />
if(connection != null) { connection.close(); }
Absetzen von SQL-Statements speziell<br />
users<br />
OOS<br />
Prof. Dr. H. Faßbender<br />
DB-Anschluss 5<br />
/* <strong>Name</strong>n aller gespeicherten Benutzer ermitteln */<br />
String query = „SELECT name FROM users“;<br />
ResultSet resultSet = statement.executeQuery(query)<br />
<strong>Name</strong><br />
Heinz Fassbender<br />
Till Dorschel<br />
query<br />
name email password<br />
Heinz Fassbender fassbender geheim<br />
Till Dorschel … geheimer<br />
List names = new ArrayList();<br />
while(resultSet.next()) {<br />
}<br />
String name = resultSet.getString(„name“);<br />
names.add(name);
Erstellung einer DataSource<br />
OOS<br />
Prof. Dr. H. Faßbender<br />
DB-Anschluss 6<br />
• Datenquelle zentrale Schnittstelle für Connection-Handling<br />
• Konfig wichtig, da sonst Performance Engpass<br />
• Verwendung von „pooled“ DataSource<br />
– nicht für jede Anfrage neue DB-Verbindung<br />
– sondern Verwaltung eines Pools von DB-Verbindungen<br />
• hier folgende primitive Verbindung als DataSource durch<br />
"jdbcDriver" für die HSQL-Datenbank<br />
BasicDataSource dataSource = new BasicDataSource();<br />
dataSource.setDriverClass<strong>Name</strong>(jdbcDriver.class.get<strong>Name</strong>());<br />
dataSource.setUrl("jdbc:hsqldb:mem:TestSpeicherDB");<br />
dataSource.setUsername("sa");<br />
dataSource.setPassword("");