2016-04-09 16 views
3

10 satıra sahip bir tablonuz varsa ve bu sorguyu iki kez yürütürsek, ikinci kez yanlış sayıda etkilenen satırları alırız.JDBC, etkilenen satırların hatalı sayısını döndürür

Açıkçası
Statement st = open(); 

st.executeUpdate("UPDATE `tickets` SET price=1000"); // return 10 
st.executeUpdate("UPDATE `tickets` SET price=1000"); // return 10 

çünkü ilk sorguda bütün satırların fiyat aslında değişikliklere 1000 ve ikinci sorgu hiçbir şey güncellenir doğru değil ama yine 10 döndürür!

Gerçekte güncelleştirilen satır sayısını nasıl alabilirim?

+0

Teknik olarak, veritabanları zaten aynı değere sahip olmasına rağmen (hatta daha basittir) satırı yine de güncelleştirebilir (ve yapar) veya eski ve yeni değeri karşılaştırmak sadece güncellemekten daha pahalı olabilir). –

+1

hayır eğer mysql komut satırında bu sorguları ikinci sorguda çalıştırırsak mysql return 0 etkilenen satırlar – rezachess

+1

Yorumum, beklentinizin tüm veritabanı sistemlerine uygulanmayacağının bir göstergesi olarak tasarlanmıştır. –

cevap

4

JDBC şartname görünüşte sürücüleri executeUpdate() dönüşü UPDATE deyiminden bulundu satır sayısı, satır sayısını değil aslında etkilenen sahip olduğunu belirler.

olacak, documentation o

JDBC uyumlu olmadığını uyarmak olmasına rağmen J, aslında bağlantınızın URL'ye özelliği useAffectedRows=true ekleyebilir değişti satır sayısını döndürmek/MySQL Connector sahip olmak DML deyimleri için "bulunan" satırlara "etkilenen satırlara" karşılık gelen uygulamaların çoğunu kırın

+2

JDBC belirtimi (4.2, bölüm 13.1.2.2), "yürütülmekte olan SQL ifadesi, SQL Veri Manipülasyon Dili (DML) ifadeleri için güncellemeden etkilenen satır sayısını döndürür" _. Bununla birlikte, etkilenen satır sayısı her veritabanı için farklı olabilir (değer aynı olsa bile tetiklenebilir, tetikleyiciler tarafından değiştirilen satırlar olabilir veya dahil edilmemiş olabilir, vb.). –

+0

Not: Bu zaten JDBC 1.2'de (ancak farklı bir şekilde ifade edilmiş) öyleydi, bu yüzden MySQL'in ne başvurduğunu merak ediyorum. –

İlgili konular