Benutzer-Werkzeuge

Webseiten-Werkzeuge


api:documentation:database:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
api:documentation:database:start [2022/06/08 10:49] – [4. Prepared Statements] Martin Pabstapi:documentation:database:start [2023/05/15 13:16] (aktuell) – [3. Daten in die Datenbank schreiben] Martin Pabst
Zeile 1: Zeile 1:
 ====== Datenbankverbindung ====== ====== Datenbankverbindung ======
 <WRAP center round warning 80%> <WRAP center round warning 80%>
-Legt man in der SQL-IDE eine Datenbank an, so kann man von Java-Programmen in der Online-IDE aus lesend und schreibend darauf zugreifen. Dies ist leider nicht von den Programmierkästen der Embedded-IDE aus möglich, daher lassen sich die Beispiele unten nicht direkt auf dieser Seite ausführen, sondern nur, wenn man sie in die Online-IDE kopiert und den Code "XYZ" durch einen korrekten Datenbankzugriffscode aus der SQL-IDE ersetzt.+Legt man in der SQL-IDE eine Datenbank an, so kann man von Java-Programmen in der Online-IDE aus lesend und schreibend darauf zugreifen. Dies ist leider nicht von den Programmierkästen der Embedded-IDE aus möglich, daher lassen sich die Beispiele unten nicht direkt auf dieser Seite ausführen, sondern nur, wenn man sie in die Online-IDE kopiert und den Code "1Ts8qXH77X" durch einen korrekten Datenbankzugriffscode aus der SQL-IDE ersetzt.
 </WRAP> </WRAP>
  
Zeile 83: Zeile 83:
 </HTML> </HTML>
  
 +==== Schreibender Zugriff mit prepared statement: ====
 +<HTML>
  
 +<div class="java-online" style="height: 350px; width: 80%" data-java-online="{'withBottomPanel': false, 'id': 'db2a'}">
 +
 +<script type="text/plain" title="DBWriteWithPreparedStatements.java">
 +Connection c = DatabaseManager.getConnection("asdfj82hkhlTi");
 +
 +String statement = """
 +update fluss set name = ? where FNR = ?
 +""";
 +
 +PreparedStatement st = c.prepareStatement(statement);
 +String neuerName = "Sanga_neu";
 +String fnr = "SAG";
 +
 +st.setString(1, neuerName);
 +st.setString(2, fnr);
 +st.executeUpdate();
 +
 +</script>
 +
 +</div>
 +
 +</HTML>
 ===== 4. Prepared Statements ===== ===== 4. Prepared Statements =====
  
Zeile 112: Zeile 136:
 Mittels ''st.setString(index, value)'', ''st.setInt(index, value)'' usw. können dann die Werte definiert werden, die statt der ''?'' eingefügt werden sollen. Der ''index'' startet dabei ungewöhnlicherweise nicht bei ''0'', sondern bei ''1''. Mittels Mittels ''st.setString(index, value)'', ''st.setInt(index, value)'' usw. können dann die Werte definiert werden, die statt der ''?'' eingefügt werden sollen. Der ''index'' startet dabei ungewöhnlicherweise nicht bei ''0'', sondern bei ''1''. Mittels
 <code java> <code java>
-st.setString(1, flussName);   // Ersetzt den Wert des ersten Fragezeichens im statement+st.setString(1, "Donau");   // Ersetzt den Wert des ersten Fragezeichens im statement 
 +</code> 
 +wird das erste ''?'' durch '' 'Donau' '' ersetzt. Anschließend wird das Statement durch 
 +<code java> 
 +ResultSet rs = st.executeQuery();
 </code> </code>
 +an die Datenbank geschickt. Natürlich gibt es auch ''st.executeUpdate()'' für datenverändernde Anweisungen (''insert'', ''update'', ...).
 </WRAP> </WRAP>
  
Zeile 148: Zeile 177:
  
  
 +<WRAP center round tip 80%>
 +Möchte man von Java aus viele gleichartige Statements hintereinander an die Datenbank schicken, z.B. zum Verändern von Daten, so bringen Prepared Statements nicht nur einen Sicherheitsgewinn, sondern auch einen Geschwindigkeitsvorteil: Man ruft ''PreparedStatement st = c.prepareStatement(statement);'' nur ein Mal auf, gefolgt von vielen abwechselnden ''st.setString'' und ''st.executeUpdate()''-Aufrufen. Das SQL-Statement wird von der Datenbank in diesem Fall nur ein einziges Mal kompiliert (beim Aufruf von ''prepareStatement'').
 +</WRAP>
  
api/documentation/database/start.1654678173.txt.gz · Zuletzt geändert: 2022/06/08 10:49 von Martin Pabst

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki