Ich verwende die JDBC-Vorlage und möchte mithilfe vorbereiteter Anweisungen aus einer Datenbank lesen. Ich iteriere über viele Zeilen in einer .csv-Datei, und in jeder Zeile führe ich einige SQL-Select-Abfragen mit entsprechenden Werten aus.Verwenden vorbereiteter Anweisungen mit JDBCTemplate
Ich möchte mein Lesen aus der Datenbank beschleunigen, aber ich weiß nicht, wie die JDBC-Vorlage mit vorbereiteten Anweisungen arbeiten soll.
Es gibt die PreparedStatementCreator und die PreparedStatementSetter. Wie in this example werden beide mit anonymen inneren Klassen erstellt. Aber innerhalb der PreparedStatementSetter-Klasse habe ich keinen Zugriff auf die Werte, die ich in der vorbereiteten Anweisung festlegen möchte.
Da ich eine .csv-Datei durchlaufe, kann ich sie nicht als String hart codieren, weil ich sie nicht kenne. Ich kann sie auch nicht an den PreparedStatementSetter übergeben, weil es keine Argumente für den Konstruktor gibt. Und meine Werte auf final zu setzen wäre auch dumm.
Ich war es gewohnt, vorbereitete Aussagen zu erstellen, die ziemlich einfach sind. Etwas wie
PreparedStatement updateSales = con.prepareStatement(
"UPDATE COFFEES SET SALES = ? WHERE COF_NAME LIKE ? ");
updateSales.setInt(1, 75);
updateSales.setString(2, "Colombian");
updateSales.executeUpdate():
wie in diesem Java tutorial.
Das würde funktionieren, aber die Werte, die ich festlegen möchte, liegen außerhalb der inneren anonymen Klasse. Innerhalb der Klasse sollte etwas wie 'updateSales.setString (2, fileRow.getName())' sein, aber ich kann nicht auf 'fileRow' Formular innerhalb der Klasse zugreifen. –
markieren Sie die var fileRow als final – Inv3r53