2012-06-13 21 views
18

Oracle'a bağlanmak için JDBC ile çalışıyorum. connection.setAutoCommit(false) vs connection.setAutoCommit(true) test ettim ve sonuçlar beklendiği gibiydi.JDBC bağlantı varsayılan otomatikKomisyon davranış

Varsayılan olarak, bağlantının autoCommit(true) [sanki yanılıyorsam beni düzelt] gibi çalışması gerekir, ancak connection.commit() adı verilene kadar kayıtların hiçbiri eklenmiyor. Varsayılan davranış ile ilgili herhangi bir tavsiye? Oracle JDBC documentation itibaren

String insert = "INSERT INTO MONITOR (number, name,value) VALUES (?,?,?)"; 

conn = connection; //connection details avoided 
preparedStmtInsert = conn.prepareStatement(insert); 
preparedStmtInsert.execute(); 

conn.commit(); 
+1

Gerçekten çalışmadığınız yerde kullandığınız kodu gösterebilir misiniz. Otomatik kabul, yalnızca ifade yürütüldükten sonra gerçekleşir. – Ben

+0

Otomatik bağlantı ayarlarını etkileyecek hiçbir şey yapmadan 'bağlantı detayları kaçınıyor' bölümünde herhangi bir şey yapıyor musunuz? –

+0

En ilginç kısmı göndermediniz - bir bağlantı oluşturan kod;) – npe

cevap

20

: Bir bağlantı oluşturulduğunda

, bu otomatik tamamlama modunda. Bu, her bir SQL ifadesinin bir işlem olarak kabul edildiği ve çalıştırıldıktan hemen sonra otomatik olarak işlenen olan anlamına gelir. (Daha fazla hassas olmak üzere, varsayılanı, yürütülürken değil, tamamlandığında bir SQL ifadesinin tamamlanacağıdır. Sonuç kümeleri ve güncelleme sayılarının tümünün alındığında tamamlandı. neredeyse her durumda, ancak, bir açıklama tamamlanmış ve bu nedenle kararlı olduğunu, yürütüldüğünde hemen sonra)

diğer şey -. Eğer bağlantı oluşturma ayrıntıları ommitted, bu yüzden sadece tahmin ediyorum - eğer bazı çerçeveler kullanıyor veya veri kaynağı veya bağlantı havuzundan bağlantı alıyorsanız, autocommit bu çerçeveler/poo tarafından off döndürülebilir ls/datasources - çözüm varsayılan ayarlarda asla güvenilmez ;-)

+0

bu yüzden varsayılan olarak almalıyım tüm durumlarda otomatik olarak doğru olmayabilir. [java'da varsayılan vs vs gibi bir şey]? – stackex

+0

Varsayılan değerler aynı olmalıdır (autocommit = true), çünkü JDBC özelliğinin söylediği şey budur. Ancak, JDBC özellikleri, çerçeveler, bağlantı havuzları ve veri kaynakları için geçerli değildir. Örneğin, JBoss'ta bir veri kaynağını tanımlarken, veri kaynağı XML dosyasında otomatik olarak yanlış olarak false olarak ayarlayabilirsiniz ve bir havuzdan alacağınız bağlantılar varsayılan olarak kapalı olacaktır. – npe

İlgili konular