該驅動程序支持批處理語句以加快批量插入。
而且使用批處理的語句是很多比使用專有的INSERT語法更便攜的(而據我所知,有一個多行插入和批量插入之間沒有什麼大的不同)
退房的PreparedStatement。 addBatch()
不支持UUID的原因可能是UUID不是Postgres核心的一部分,只是一個contrib模塊。
編輯
關於執行異構語句
Postgres的驅動程序支持不同類型的批處理報表。
下正常工作:
Connection con = DriverManager.getConnection("jdbc:postgresql://localhost/postgres", "foo", "bar");
con.setAutoCommit(false);
Statement stmt = con.createStatement();
stmt.addBatch("create table foo (id integer, data varchar(100))");
stmt.addBatch("insert into foo values (1, 'one')");
stmt.addBatch("insert into foo values (2, 'two')");
stmt.addBatch("update foo set data = 'one_other' where id = 1");
stmt.executeBatch();
con.commit();
雖然你失去了自動轉義是PreparedStatement的給你。
不應該將任何逸出你使用`PreparedStatement`,並在其中設置值處理的呢?批量更新不適用於插入多行? – ColinD 2011-02-04 16:18:30
你究竟是什麼意思:*沒有函數來逃避值消耗* – 2011-02-04 16:26:33
@ColinD對於同類語句來說沒關係,但我也需要批量執行異類語句,並且Statement.addBatch只能接受SQL語句作爲String,不是另一種說法。 – andreypopp 2011-02-04 17:06:12