用 PreparedStatement 向 SqlServer 中一次性插入多條記錄

標準 SQL 都提供了下面這種方式一條 INSERT INTO 語句插入多條記錄sql

INSERT INTO Customers(Id, Name, Age) VALUES (1, 'Name1', 21.5), (2, 'Name2', 32.3)sqlserver

VALUES 以後用括號列出每一條記錄。可是在 Java 中想把上面的語句轉換成 PreparedStatement  來插入多條記錄時就有些問題。要麼寫成server

INSERT INTO Customers(Id, Name, Age) VALUES(?, ?, ?), (?, ?, ?), (?, ?, ?) ....blog

咱們不知道 VALUES 後應該列多少個問號,並且  JDBC 對參數的個數是有限制的,最多 2000 個參數。若是根據字段個數來算一次添加多少條記錄,那麼這條 SQL 語句也是動態的,不能很好的做爲 PreparedStatement 進行預編譯。以一個表三個字段爲例,2000 個參數下一次性最多能插入記錄數 666 條,也可能因爲輸入是 666 條記錄的任意數量,因此生成的語句非靜態的。ip

這種方式與每次手動拼湊一個徹底靜態的 INSERT INTO 語句應該不會有太多的差異。get

若是隻是寫成 編譯

INSERT INTO Customers(Id, Name, Age) VALUES(?, ?, ?)im

而後試圖進行下面的操做 閱讀全文 >>block

相關文章
相關標籤/搜索