Selamlar
Java ile updateable bir resultset oluşturuyorum ama nasıl yaparsam yapayım bu resultset read-only geliyor. Yani update etmek istediğim zaman hata alıyorum. Kod örneğim aşağaki gibidir. Neden bu sorunu yaşadığımla alakalı bir yorumunuz olursa sevinirim.
Class.forName(“oracle.jdbc.driver.OracleDriver”);
Connection connection = DriverManager.getConnection(
“path-to-db”, “kullanici-adi”, “sifre”);
Statement stmt = connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
ResultSet executeQuery = stmt.executeQuery(“SELECT * FROM MAIL WHERE status = ‘WA’ and message_id is null”);
return executeQuery;
Kullandığınız JDBC driver veya kullandığınız veritabanı sistemi update edilebilir result set’i desteklemiyor olabilir.
Oracle, aşağıdaki linkteki sayfada bununla ilgili notunu düşmüş. Result set update’i destekleyip desteklemediğini DatabaseMetaData.supportsResultSetConcurrency metoduyla öğrenebilirsiniz. Bu method “true” döndürüyorsa update’i destekliyordur. false ise desteklemiyordur.
https://docs.oracle.com/javase/tutorial/jdbc/basics/retrieving.html
Burak’ın söylediği de güzel birşeymiş, daha önceden duymamıştım.
Benim sorunum o kadar karmaşık çıkmadı, gayet basit bir durummuş ama anlamam zamanımı aldı.
updateable bir resultset olsa bile, select * from diye sorgu çalıştırırsak, yani kolon isimleri yerine * koyarsak resultset read-only açılıyormuş.Yani kayıtlarda değişiklik yapamıyoruz.
SELECT kolon1, kolon2, kolon3 FROM tablo
Şeklinde çalıştırdığımız zaman kayıtlar güncellenebiliyor.