2011-02-01 11 views
8

Tek bir işlemde birleştirerek, bir tane Statement'a iki ekleme sorgusu yürütmeye çalışıyorum.Tek bir işlemde iki farklı sorgusu yürütme

Ben addBatch yöntemle bakıyordu, ama eğer doğru anlamak farklı parametrelerle aynı yuvasını birden çok kez çalıştırmak için, ya da toplu fazla sorgular eklemek için Statement nesne üzerinde kullanılabilen tek PreparedStatement ile kullanılabilir ancak parametreler ekleme yeteneği olmadan (böylece sql dizesinde değerler ekleyebilirim. SQL injection stili).

Ayrıca, her iki eki bir SQL deyiminde (insert into table1 values(?, ?); insert into table2 values(?, ?);) yazmanın naif bir yaklaşımını denedim, ancak bu şekilde PreparedStatement yalnızca ilk iki parametreyi görüyor ve 3. ve 4. vuruşları ayarlamak bir istisna oluşturmaya çalışıyor.

+3

, aynı işlemde iki 'PreparedStatement' kullanmak isteyen değil nedeniniz nedir? Bu hayatınızı kolaylaştıracak! –

+0

Evet, sanırım bunu düşünmemek dışında, bunu yapmamanın özel bir sebebi yok. İşaret ettiğin için teşekkürler. –

cevap

22

iki ayrı ifadeleri yürütün autocommit devre dışı bırakmak ve daha sonra elle bir işlem işleyebileceği: meraktan

connection.setAutoCommit(false); 
try { 
    ... 
    stmt1.execute(); 
    ... 
    stmt2.execute(); 
    connection.commit(); 
} catch (Exception ex) { 
    connection.rollback(); 
}