Kustomisasi ResultSet

API JDBC modern ngidini sampeyan ngatur obyek kanthi apik.Pratelanlanset asil. Contone, nggunakakeset asilsampeyan bisa ngganti baris ing database.

Nalika nggawe obyek statement, kita bisa pass Bunch saka wishes menyang. Kepengin kasebut bisa dipérang dadi telung klompok:

  • Tipe sambungan dhasar
  • Kontrol akses bebarengan
  • Ketekunan lan transaksi

Parameter kasebut bisa dilewati nalika nggawe obyekPratelanutawaPreparedStatement. Tuladha:

Statement statement = connection.createStatement(
    ResultSet.TYPE_FORWARD_ONLY,
    ResultSet.CONCUR_READ_ONLY,
    ResultSet.CLOSE_CURSORS_OVER_COMMIT );

PreparedStatement statement = connection.prepareStatement(sql,
    ResultSet.TYPE_FORWARD_ONLY,
    ResultSet.CONCUR_READ_ONLY,
    ResultSet.CLOSE_CURSORS_OVER_COMMIT);

Kita ora bakal sinau babagan iki kanthi jero, nanging aku pengin sampeyan ngerti manawa iki bisa ditindakake yen sampeyan nemokake sing padha karo kode wong liya.

jinis ResultSet

ResultSet bisa dadi jinis tartamtu. Jinis kasebut nemtokake sawetara karakteristik lan kemampuan ResultSet.

Ora kabeh jinis didhukung dening kabeh database lan driver JDBC. Sampeyan kudu mriksa database lan driver JDBC kanggo ndeleng manawa ndhukung jinis sing pengin digunakake. Metode DatabaseMetaData.supportsResultSetType(int type) ngasilake bener utawa salah gumantung apa jinis sing diwenehake didhukung utawa ora.

Nalika nulis, ana telung jinis ResultSet:

  • ResultSet.TYPE_FORWARD_ONLY
  • ResultSet.TYPE_SCROLL_INSENSITIVE
  • ResultSet.TYPE_SCROLL_SENSITIVE

Jinis standar yaiku TYPE_FORWARD_ONLY.

TYPE_FORWARD_ONLY tegese ResultSet mung bisa dipindhah maju. Tegese, sampeyan mung bisa pindhah saka baris 1, baris 2, baris 3, etc. Ing ResultSet, sampeyan ora bisa mindhah mundur: sampeyan ora bisa maca data saka baris 9 sawise maca sepuluh.

TYPE_SCROLL_INSENSITIVE tegese ResultSet bisa dipindhah (digulung) maju utawa mundur. Sampeyan uga bisa pindhah menyang posisi relatif kanggo posisi saiki, utawa pindhah menyang posisi Absolute.

A ResultSet saka jinis iki ora sensitif marang owah-owahan sumber data sing ndasari nalika ResultSet mbukak. Yaiku, yen entri ing ResultSet diganti ing basis data kanthi utas utawa proses liyane, ora bakal katon ing file sing wis dibukak.set asilsaka jinis iki.

TYPE_SCROLL_SENSITIVE tegese ResultSet bisa dipindhah (digulung) maju utawa mundur. Sampeyan uga bisa pindhah menyang posisi relatif kanggo posisi saiki, utawa pindhah menyang posisi Absolute.

ResultSet saka jinis iki sensitif marang owah-owahan ing sumber data dhasar nalika ResultSet mbukak. Yaiku, yen entri ing ResultSet diganti ing basis data kanthi utas utawa proses liyane, bakal katon ing file sing wis mbukak.set asilsaka jinis iki.

Konkurensi

Konkurensi ResultSet nemtokake manawa ResultSet bisa dianyari utawa mung diwaca.

Sawetara database lan driver JDBC ndhukung nganyari ResultSet, nanging ora kabeh. Metode DatabaseMetaData.supportsResultSetConcurrency(int concurrency) ngasilake bener utawa salah gumantung apa mode konkurensi sing diwenehake didhukung utawa ora.

ResultSet bisa duwe salah siji saka rong tingkat konkurensi:

  • ResultSet.CONCUR_READ_ONLY
  • ResultSet.CONCUR_UPDATABLE

CONCUR_READ_ONLY tegese ResultSet mung bisa diwaca.

CONCUR_UPDATABLE tegese ResultSet bisa diwaca lan diowahi.

Conto ngganti data ing database

Kanthi paramèter kasebut, sampeyan bisa ngontrol Statement sing digawe lan ResultSet.

Contone, sampeyan bisa nggawe ResultSet sing bisa dianyari lan digunakake kanggo ngganti database. Nalika nggawe Pernyataan, penting kanggo mirsani kahanan ing ngisor iki:

  • mung siji tabel sing ditemtokake
  • ora ngemot gabung utawa klompok miturut klausa
  • kolom pitakon kudu ngemot kunci utama

Yen kondisi ing ndhuwur wis ketemu, ResultSet sing dianyari bisa digunakake kanggo nganyari tabel ing database. Nalika nggawe obyek Statement, sampeyan kudu nemtokake parameter ing ngisor iki:

Statement st = createStatement(Result.TYPE_SCROLL_INSENSITIVE, Result.CONCUR_UPDATABLE)

Asil saka eksekusi statement kasebut minangka set asil sing bisa dianyari. Cara nganyari yaiku mindhah kursor ResultSet menyang baris sing pengin dianyari banjur nelpon metode updateXXX() .

Metode updateXXX dianggo padha karo metode getXXX() . Cara updateXXX() nduweni rong paramèter. Kapisan yaiku nomer kolom sing dianyari, sing bisa dadi jeneng kolom utawa nomer seri. Kapindho yaiku data sing kudu dianyari, lan jinis data iki kudu padha karo XXX.

Kanggo bener nganyari baris ing database, sampeyan kudu nelpon updateRow () cara sadurunge kursor ResultSet ninggalake baris diganti, yen owah-owahan ora bakal njaluk menyang database.

Sampeyan uga bisa nambah baris anyar menyang tabel:

Pisanan sampeyan kudu mindhah kursor menyang baris kosong. Kanggo nindakake iki, nelpon cara moveToInsertRow() .

Banjur sampeyan kudu ngisi baris iki nganggo data nggunakake metode updateXXX() .

Banjur sampeyan kudu nelpon cara inserterRow () kanggo nambah baris kanggo basa.

Lan pungkasanipun, sampeyan kudu bali kursor kanthi nelpon cara moveToCurrentRow() .

Penting! Ora kabeh DBMS ndhukung opsi iki kanggo Pernyataan lengkap. Yen ana masalah, deleng dokumentasi resmi DBMS tartamtu.