Koreksi dikit. CMIIW
Sebenarnya ketika koneksi terus dipertahankan ke server, dan user tidak dalam
keadaan aktif, yg terbebani sebenarnya bukan server, tapi jaringan, karena
bandwith terpakai terus menerus utk mempertahankan koneksi ke server (terjadi
transfer paket data utk menunjukkan kalo koneksi ke DBMS masih digunakan), n
dalam kasus user dgn jumlah besar.
Kemudian, Cursor tidak bisa disamakan dengan tabel. Cursor adalah objek yg
berisi data yg diambil dari database, dalam kasus ini data bisa saja berasal
dari sebuah query atau yang lainnya seperti stored procedure.
Next, selama saya menggunakan ADO, setau saya default cursor bukan di server,
tapi di client (adUseClient).
The Next One, dalam pandangan saya, Cursor KeySet, dan ForwardOnly juga cocok
digunakan dalam recordset terputus, karena kedua cursor tsb juga berada di
client. Jadi, data ditransfer ke client. ForwardOnly, berguna kalo kita hanya
butuh membaca data sepintas lalu (baca: gak maju mundur), very useful for
simple operation.
And, Finally, sebenarnya objek Connection-nya gak perlu di set ke Nothing.
Cukup panggil method Close, maka koneksi akan diputuskan dari server, tetapi
objek masih ada di memory dimana aplikasi dijalankan. Tujuannya, agar ketika
ingin digunakan kembali (dalam kasus misalnya perekaman data), VB gak usah lagi
mengalokasikan lokasi di memori utk objek koneksi. Ibaratnya, selesai
menelepon, gak perlu teleponnya kita bongkar atau dibuang kan, kecuali kalo gak
bakalan menelepon lagi selamanya. :D
Lilis <[EMAIL PROTECTED]> wrote:
.........(dihapus)
judul materi ini adalah " Recordset Terputus "
mungkin sudah ada temen2 yg paham dan mungkin juga belum ada yang paham
tentang recordset terputus.
terkadang kalo programmer membangun suatu sistem client server, si
programmer ga memikirkan
bahwa kadang user males utk log off dari sistem nya. sehingga seharian
kadang aplikasi nya
masih terus berjalan. nah ini menyebabkan server terus menerus "mengadakan
hubungan" dgn
user tsb, coba bayangkan jika ada lebih dari 10 user yang tidak mau log off
maka tentulah
kinerja server jadi agak "lelet" krn harus terus menerus membuka koneksi ke
user padahal sudah
tidak diperlukan.
tapi dengan adanya teknologi recordset terputus, (bahkan VB .Net sdh
mendefault kan teknologi ini)
maka beban server bisa berkurang sekalipun si user itu tetap ga mau log off
atau menutup
aplikasi nya.
ada tiga property dari type recordset yg bisa digunakan
1. CursorLocation
2. CursorType
3. LockType
property CursorLocation menandai dimana cursor recordset itu dibuat. apa sih
arti cursor?
istilah cursor sebenarnya identik dengan sebutan table, jadi boleh dikatakan
bahwa cursor
itu bisa juga disebut table.
CursorLocation apabila tdk di definisikan maka defaultnya adalah server
(adUseServer).
apabila CursorLocation ditentukan pada sisi server maka semua lalulintas
operasi data
diserahkan sama server. krn semua proses dikerjakan dl server inilah
CursorLocation jenis
server lebih lamban dibandingkan dengan cursor yg berbasiskan - client
karena hnya menyediakan
akses tunggal.
berbeda apabila cursor nya berbasis client, semua proses dikerjakan pada
client itu sendiri,
sehingga beban server tidaklah terlalu "megap-megap" krn ngurusin lalu
lintas data dari
bebrapa client. (bisa dibayangkan kan?)
nah dari gambaran inilah maka dipilihlah CursorLocation yg ideal utk
membangun suatu
Recordsest Terputus yaitu adUseClient.
setelah kita tentukan CursorLocation nya, maka kita tentukan jenis cursornya
untuk menyediakan
suatu perubahan pada recordset.
ada 4 jenis perubahan cursor (CursorType) ini yaitu:
1. Dynamic
2. KeySet
3. Static
4. Forward-only
masing2 cursor memang punya kelebihan dan kekurangan, tapi krn skrng aku
lagi bicara tentang
recordset terputus maka ga semuanya dibahas :-(
dari ke4 CursorType diatas, type Static adalah CursorType satu2nya yang
cocok dgn CursorLocation
berbasis client. CursorType Static adalah jenis cursor yang perubahanya
tidak langsung bisa
dilihat apabila ada operasi Insert, Update, atau Delete pada data. utk
melakukannya harus
dikenakan perintah updatebatch.
nah, selesai kita mendefinisikan CursorTypenya, selanjutnya adalah
menentukan penguncian
recordset yg dinamakan dgn LockType. LockType adalah tipe dari penguncian
yang digunakan saat
operasi update dikerjakan ke database.
ada 4 type kunci ini yaitu:
1. adLockReadOnly
2. adLockPessimistic
3. adLockOptimistic
4. adLockBatchOptimistic
karena kita sedang membicarakan recordset terputus maka penguncian
adLockBatchOptimistic
satu2nya yg dibutuhkan dlm teknologi ini. yaitu suatu proses peng update-tan
yang dikerjakan
dengan cara batch shg perubahan recordset tsb dikirim ke server dgn cara
updatebatch.
masih ingat kan mata kuliah komunikasi data sewaktu kuliah?
ada 3 cara proses transfer data: online, offline dan batch
lalu apa itu batch?
jadi sebagai kesimpulan nya, recordset terputus dapat didefinisikan dgn cara
sbb:
1. lokasi cursor nya berbasis client
2. tipe penguncian recordsetnya adalah optimistik batch
3. jenis cursornya adalah static
untuk memutuskan sebuah recordset, caranya sangat sederhana yaitu dgn cara
mengeset
active connnection ke nothing.
berikut ini adalah contoh kode utk membuat recordset terputus.
private cn as connection
private rs as recordset
set cn=new connection
set rs=new recordset
cn.provider = "sqloledb"
cn.open "server=(local);database=northwind;uid=sa;pwd=password"
with rs
.cursorlocation = adUseClient
.Loctype = adLockBatchOptimistic
.CursorTyp e= adOpenStatic
.Source = "SELECT * FROM Customers"
.open
'--recordset terputus
Set .ActiveConnection=nothing
end with
apabila ada operasi penambahan atau manipulasi yg lain (DML)
rs.AddNew
rs.Fields("customerid").Value=Text1.Text
rs.Fields("CompanyName").Value=Text2.Text
'--koneksikan kembali
rs.ActiveConnection=cn
rs.UpdateBatch
'----selesai
..........(dihapus)
Jemmy H. Tecoalu
Personal blog:
http://jemmyt.blogspot.com
http://geeks.netindonesia.net/blogs/jemmy
"The present was affected by the past, and the present will affect the future."
---------------------------------
Be a better pen pal. Text or chat with friends inside Yahoo! Mail. See how.