在 Prepared Statement INSERT 中使用表名變數
使用 Java PreparedStatement 物件建立一系列批次 INSERT 查詢時,許多開發人員會遇到將表名變數新增至查詢的挑戰。當處理具有相同列格式的多個表時,這通常是可取的。
嘗試將表名硬編碼為查詢語句中的「?」變數可能會導致錯誤。相反,表名應該保持為一個變量,在執行批量查詢之前動態填充。
有些人可能會嘗試使用 stmt.setString(1, "tableName1") 來動態設定表名,但這在 PreparedStatement 中是不可能的。相反,必須在將查詢和表名指派給 PreparedStatement 之前將它們連接或格式化在一起。
解:
您可以使用字串連線或 String.format 方法動態建構 SQL 查詢。表名並非旨在成為 PreparedStatement 中的變量,而是靜態查詢字串的一部分。
範例:
<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>
透過在將查詢字串指派給 PreparedStatement 之前動態建構它,您可以確保每個插入語句都定向到對應的表。
以上是如何在PreparedStatement INSERT 查詢中使用表名變數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!