Verwenden Sie Tabellennamenvariablen im Prepared Statement INSERT
Beim Erstellen einer Reihe von Batch-INSERT-Abfragen mithilfe von Java PreparedStatement-Objekten stehen viele Entwickler vor der Herausforderung, Tabellennamenvariablen zur Abfrage hinzuzufügen. Dies ist oft wünschenswert, wenn mit mehreren Tabellen mit demselben Spaltenformat gearbeitet wird.
Der Versuch, den Tabellennamen in einer „?“-Variablen in der Abfrageanweisung fest zu codieren, kann zu Fehlern führen. Stattdessen sollte der Tabellenname als Variable beibehalten und vor der Ausführung der Batch-Abfrage dynamisch gefüllt werden.
Einige Leute versuchen möglicherweise, stmt.setString(1, „tableName1“) zu verwenden, um den Tabellennamen dynamisch festzulegen, aber das ist in PreparedStatement nicht möglich. Stattdessen müssen Abfrage- und Tabellennamen miteinander verkettet oder formatiert werden, bevor sie dem PreparedStatement zugewiesen werden.
Lösung:
Sie können SQL-Abfragen mithilfe der Zeichenfolgenverkettung oder der String.format-Methode dynamisch erstellen. Der Tabellenname soll keine Variable im PreparedStatement sein, sondern ist Teil der statischen Abfragezeichenfolge.
Beispiel:
<code class="language-java">String tableName = "tableName1"; // 将表名连接到查询中 String query = String.format("INSERT INTO %s (col1, col2, col3, col4, col5) VALUES (?,?,?,?,?,?);", tableName); PreparedStatement stmt = connection.prepareStatement(query);</code>
Indem Sie die Abfragezeichenfolge dynamisch erstellen, bevor Sie sie dem PreparedStatement zuweisen, stellen Sie sicher, dass jede Einfügeanweisung an die entsprechende Tabelle weitergeleitet wird.
Das obige ist der detaillierte Inhalt vonWie kann ich eine Tabellennamenvariable in einer PreparedStatement-INSERT-Abfrage verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!