資料庫dataset 問題. |
尚未結案
|
tidal
初階會員 發表:93 回覆:32 積分:25 註冊:2003-07-15 發送簡訊給我 |
假如我用2個dataset, 分別是dataset1, dataset2. 每個dataset都把'customer'這個table全部的資料select下來. 假如dataset1把其中一個record改了.那另一個dataset會知道嗎? 如果不知道, 有什麼辨法可以知道?
還有的是, 假如做不到. 是不是要做locking才可以使資料一致?delphi用什麼method可以做到data locking? 另外一個問題是. 假如當已連接的database因為網絡問題而中斷. 這樣的情況要如何處理? 我是新手. 問題比較多. 請大大多多幫忙^^ 發表人 - tidal 於 2004/10/16 20:34:34
|
pgdennis
資深會員 發表:41 回覆:526 積分:443 註冊:2002-05-23 發送簡訊給我 |
1.用離線方式取得資料(clientdataset),會發生你問的問題,A在改資料,B並不會知道
2.如果你是用Tquery等元件取資料,當A在修改狀態時,B只能為讀取資料
這樣資料就能確保一制性,缺點就是A lock table了,
3.如要用離線方式取得資料(clientdataset),但要知道別人是否已經改資料了
通常我都用在table加一欄位表示資料修改時間,直接讀取他的值跟你dataset中的值是否不一樣了,就知道別人是否已修改
星期一,星期二...星期日..星期一..無窮迴圈@@
------
星期一,二...無窮迴圈@@ |
tidal
初階會員 發表:93 回覆:32 積分:25 註冊:2003-07-15 發送簡訊給我 |
引言: 1.用離線方式取得資料(clientdataset),會發生你問的問題,A在改資料,B並不會知道 2.如果你是用Tquery等元件取資料,當A在修改狀態時,B只能為讀取資料 這樣資料就能確保一制性,缺點就是A lock table了, 3.如要用離線方式取得資料(clientdataset),但要知道別人是否已經改資料了 通常我都用在table加一欄位表示資料修改時間,直接讀取他的值跟你dataset中的值是否不一樣了,就知道別人是否已修改 星期一,星期二...星期日..星期一..無窮迴圈@@ >>< face="Verdana, Arial, Helvetica"> 請問大大, 如果我用SQL直接改資料而不用TQuery. 是不是會產生資料不一致的問題? 還有我用ADO作連接. 用ADOQuery 也會lock table嗎? 最後,假如我已經從database拿下資料放在dataset.但因為網絡問題而中斷資料庫的連接. 而再用dataset去update資料時會發生什麼問題?. 這樣的情況要如何處理比較好? 有沒有方法可以real-time知道資料庫是不是還在連接? 感謝大大的幫忙^^ |
likush
高階會員 發表:5 回覆:235 積分:103 註冊:2002-10-08 發送簡訊給我 |
|
pgdennis
資深會員 發表:41 回覆:526 積分:443 註冊:2002-05-23 發送簡訊給我 |
1.關於斷線偵測與離線更新資料likush兄已說明
2.查覺資料是否已被更改,同我之前發文的,另外也可用CURSORTYPE設為ctDynamic
這樣他會定期去看資料是否已被更新,缺點是網路round-trip多,這可就要你自己
取捨,看是要在資料更新前自己去看資料是否已被更新,還是由ado幫你做...
3.adoqury的LockType 選ltOptimistic或ltBatchOptimistic只在資料更新瞬間lock資料表(batch允許批次更新),如果選ltOptimistic,那在query進入edit mode時就會lock資料表了,缺點是lock時間可能太久.. 星期一,星期二...星期日..星期一..無窮迴圈@@
------
星期一,二...無窮迴圈@@ |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |