各位:
問題:一個操作界面在不同主機上多人可能同時使用,如何保存界面資料到資料庫?
uj5u.com熱心網友回復:
登錄,按用戶分別保存他們的定制uj5u.com熱心網友回復:
同意樓上的,也可以將個人定制的界面保存到INI檔案或本地資料庫。uj5u.com熱心網友回復:
和1臺計算機沒區別,正常的append/edit,post只不過會存在并發時搶單的現象,要處理一下
uj5u.com熱心網友回復:
這種需求為什么不考慮BS結構?uj5u.com熱心網友回復:
似乎只有三樓明白了我的意圖。這個問題資料庫鎖機制可否能解決?uj5u.com熱心網友回復:
直接c/s結構,判斷都用資料的標志位,比較大用B/s結構,我最近也一直糾結,b/s delphi似乎并不很合適。uj5u.com熱心網友回復:
所有c/s、b/s應用都會這樣如果同時對一條記錄進行編輯,都會存在沖突、臟資料的問題,靠專門的標志來控制同時只能一個進行編輯
uj5u.com熱心網友回復:
用事物,交給sql來處理臟資料uj5u.com熱心網友回復:
這是一個典型的C/S設計啊,關鍵看你怎樣連資料庫。個人認為以ADO連接為好,ADO自有一套多用戶并發處理機制,無須用戶操心。
如果有多個用戶對一條記錄進行處理,可以用消極鎖定或積極鎖定。
uj5u.com熱心網友回復:
最好是分開操作,登錄時根據用戶的工號提取記錄,每個人只能修改自己添加的記錄。要查詢時,另開視窗。uj5u.com熱心網友回復:
參考#9樓:這是一個典型的C/S設計啊,關鍵看你怎樣連資料庫。
個人認為以ADO連接為好,ADO自有一套多用戶并發處理機制,無須用戶操心。
如果有多個用戶對一條記錄進行處理,可以用消極鎖定或積極鎖定。
這三句話很對。我界面代碼中對INSert與Update都采取事物保護了。關鍵你說“ADO自有一套多用戶并發處理機制,無須用戶操心”,如何去理解?
我的1個操作界面資料在資料庫中對應的資料表分為操作記錄表與操作歷史記錄表。當用戶打開操作界面時,首先會顯示所有未完成任務專案(對應操作記錄表)。如果今日操作記錄表中有一項任務完成,用戶就可在操作界面中洗掉此項任務保存到操作歷史記錄表中。此時操作界面資料會重新保存,我首先用界面代碼洗掉所有操作記錄表中的資料,用回圈重新保存操作界面中的資料。擔心的問題就有了:當多人同時操作此界面時,會不會發生資料保存的一致性?
uj5u.com熱心網友回復:
不專門的標志來控制,單純靠事務、鎖,可能會有問題因為用戶進入編輯到取消或完成,是一個很長的程序,甚至中間可能死機斷網
鎖這么久,肯定不好
uj5u.com熱心網友回復:
sz_haitao:不專門的標識,怎么去理解與實作?
uj5u.com熱心網友回復:
我感徑訓是后臺的問題,用記憶體表關聯前后臺的資料,一次性提交,后臺再解決沖突的問題。uj5u.com熱心網友回復:
業務的現象處理機制決定了使用怎樣的鎖機制uj5u.com熱心網友回復:
就是一些添加洗掉修改的方法嗎
uj5u.com熱心網友回復:
這里好多廢話啊 最后的解決方案呢uj5u.com熱心網友回復:
洗掉修改時鎖下就好了uj5u.com熱心網友回復:
這種問題應該是最常見到的吧!不用資料庫鎖什么的,完全是編程可以實作的。有這么幾種方案供選擇:1、主鍵用序列,添加時取序列即可(Oracel資料庫),SQL有自增欄位。這個應該沒有問題吧。
2、為每個客戶分配一個唯一編號,當一個客戶端登錄時根據客戶端編號+序號來生成主鍵,也不存在這種問題。
3、和第二種類似,以登錄用戶的編號+序號來生成主鍵也可以!
暫時想到這幾種方法!不知道否合你的情況不!
uj5u.com熱心網友回復:
先把問題說清楚吧,什么要求。uj5u.com熱心網友回復:
還是用識別符號吧,鎖定不可靠.uj5u.com熱心網友回復:
如果用關系型資料庫,表有主鍵就行。如果用Delphi的DataSet提交資料。其他用戶修改了記錄,TDataSet會識別到欄位已經被其他用戶更改,從而回傳失敗資訊。
如果自己用SQL陳述句提交資料(一次提交多個表的資料),則SQL陳述句要考慮并發問題,提交資料前檢查原始資料是否被更改了。一般用默認事務來實作就可以了,也可以不同的事務鎖。不同的要求使用不同的鎖,鎖及事務就是用來解決并發問題的。
一般的流程:
1、從DBS得到原始資料(多個表)-->2、顯示界面-->3、修改或計算得到新的資料-->4、提交資料到DBS(多個表)
并發時,要考慮在4、提交資料到DBS之前,檢查原始資料是否被變更。用鎖機制需要鎖定多個表,用戶量大時往往不現實。
檢查原始資料是否被變更的一個方法:計算全部原始資料的MD5值,作為計算結果的一項寫入資料庫做為事務標識。自行維護該事務標識相比加鎖機制,能得到更高的性能。
不同的資料,不同的要求,有不同的實作,這個就是程式設計,而不是照抄。
uj5u.com熱心網友回復:
等待 高手回答!轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/143638.html
標籤:數據庫相關
