> Saya punya aplikasi database dengan FB 1.02. Statusnya lokal. Ketika
> database sedang dibuka, Firebird Manajernya saya STOP, lalu setelah 1
> detik saya START lagi.
Glekh...:) Database lagi open, lalu server-nya 'dicabut' semena mena
gitu? Tega sekali...;)
> Kemudian database yang tadinya terbuka (sebelum saya stop FBServe-nya)
> saya tutup. Hasilnya adalah, kalau dalam IDE Delphi, muncul
> windows CPU dengan error message Access Violation. Jika dari
> luar Delpi, aplikasi langsung nutup, atau kelua tulisan invalid
> database handle (no active connecton).
This is by design. Expected behaviour-nya memang begini. Kalau anda
disconnect, berarti anda harus connect ulang, etc, dan otomatis semua
transactions yang sedang anda kerjakan dianggap rollback, untuk
melindungi integritas database.
> Bagaimana caranya agar koneksi database yang terputus oleh putusnya
> koneksi LAN atau berhentinya FBServer bisa dilanjutkan kembali
> (koneksinya) TANPA harus menutup (close) aplikasi dulu. Data
> yang sedang diedit mejaadi hilang, tak apa, yang penting tidak
> tutup aplikasi dan tidak ada error Access Violation yang muncul.
WHY DO YOU NEED TO DO THIS? :)
Kalau database server mati, ya otomatis anda harus restart server,
restart aplikasi, dan ulangi. Tidak masuk akal mengharapkan aplikasi
harus handle masalah ini secara live.
> Saya punya pemikiran seperti ini adalah, JIKALAU, aplikasi
> database itu via network. Kabel LAN nya tersenggol / kurang pas
> sehingga koneksinya terputus. Koneksi yang menggantung itu menjadi
> masalah. Kalau bisa dibuat nyambung lagi,
Anda bicara dua hal yang berbeda disini :
Yang anda sebutkan di paragraf ini adalah 'network problem', masalah
kabel, tetapi server dan client sama sama tidak 'crash'. Kalau
skenario-nya seperti ini, tidak perlu diapa-apakan, tinggal di-retry
saja, dan setahu saya IB/FB ada timeout value untuk menunggu apabila
terjadi network problem. Bedakan dengan skenario yang anda sebutkan
pertama, yaitu kejadian dimana SERVER-nya yang down. Ini tidak bisa bisa
anda akali dari client side.
Sesudah bilang begitu, kembali lagi bahwa sebenarnya 'tidak ada yang
tidak mungkin', tetapi anda harus siap bayar harganya karena ini tidak
mudah...:) Yang terpikir sekarang adalah anda menerapkan full 'offline'
model, jadi tidak bisa dengan data aware control ataupun persistent
connection. Semua interaksi dengan server dilakukan dengan konteks
koneksi independen/terpisah, termasuk :
1. mengambil data (select)
2. mengubah data (update)
3. menambah data (insert)
4. menghapus data (delete)
Jadi untuk *setiap* interaksi dengan server, harus anda 'bungkus' dengan
processing seperti berikut:
...
procedure ambil_data_customer;
begin
//1. create database connection
//2. try to login
//3. execute sql
//4. close connection
//5. return values to User interface
end;
...
Step nomor 3, execute sql, tentu berbeda beda tergantung operasi yang
anda inginkan (insert/select/update/delete), etc. Disini user interface
tidak boleh menggunakan data aware component (yang biasanya bergantung
pada persistent component), jadi model-nya lebih mirip web programming,
stateless dan jauh lebih primitif.
Salam,
sugi.
------------------------ Yahoo! Groups Sponsor ---------------------~-->
Buy Ink Cartridges or Refill Kits for Your HP, Epson, Canon or Lexmark
Printer at Myinks.com. Free s/h on orders $50 or more to the US & Canada.
http://www.c1tracking.com/l.asp?cid=5511
http://us.click.yahoo.com/l.m7sD/LIdGAA/qnsNAA/i7folB/TM
---------------------------------------------------------------------~->
Berlangganan: [EMAIL PROTECTED]
Stop Berlangganan: [EMAIL PROTECTED]
Keluhan Milis(Unbouncing,spam,dll): [EMAIL PROTECTED]
Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/