編了一個程式,在datagrid中顯示和編輯資料,之后保存到資料庫。但是還想實作,軟體被多個不同電腦的用戶使用,一個用戶修改并保存后,其他用戶點擊“更新”就可以看到他人修改后的檔案。不知道這樣應該如何實作?
對這一塊不是很了解,如果時間充足,可不可以詳細回答一下,謝謝大家啦
uj5u.com熱心網友回復:
Recordset 物件Recordset 物件表示的是來自基本表或命令執行結果的記錄全集。任何時候,Recordset 物件所指的當前記錄均為集合內的單個記錄。
說明
可使用 Recordset 物件操作來自提供者的資料。使用 ADO 時,通過 Recordset 物件可對幾乎所有資料進行操作。所有 Recordset 物件均使用記錄(行)和欄位(列)進行構造。由于提供者所支持的功能不同,某些 Recordset 方法或屬性有可能無效。
ADOR.Recordset 和 ADODB.Recordset 是用來創建 Recordset 物件的 ProgID。由此產生的 Recordset 物件行為相同,與 ProgID 無關。ADOR.Recordset 隨 Microsoft? Internet Explorer 安裝,而 ADODB.Recordset 則隨 ADO 安裝。Recordset 物件的行為受環境(即客戶端、服務器、Internet Explorer 等)的影響。這些差異將在屬性、方法和事件的“幫助”主題中加以說明。
在 ADO 中定義了四種不同的游標型別:
動態游標 — 用于查看其他用戶所作的添加、更改和洗掉,并用于不依賴書簽的 Recordset 中各種型別的移動。如果提供者支持,可使用書簽。
鍵集游標 — 其行為類似動態游標,不同的只是禁止查看其他用戶添加的記錄,并禁止訪問其他用戶洗掉的記錄,其他用戶所作的資料更改將依然可見。它始終支持書簽,因此允許 Recordset 中各種型別的移動。
靜態游標 — 提供記錄集合的靜態副本以查找資料或生成報告。它始終支持書簽,因此允許 Recordset 中各種型別的移動。其他用戶所作的添加、更改或洗掉將不可見。這是打開客戶端 (ADOR) Recordset 物件時唯一允許使用的游標型別。
僅向前游標 — 除僅允許在記錄中向前滾動之外,其行為類似靜態游標。這樣,當需要在 Recordset 中單程移動時就可提高性能。
在打開 Recordset 之前設定 CursorType 屬性來選擇游標型別,或使用 Open 方法傳遞 CursorType 引數。部分提供者不支持所有游標型別。請檢查提供者的檔案。如果沒有指定游標型別,ADO 將默認打開僅向前游標。
如果 CursorLocation 屬性被設定為 adUseClient 后打開 Recordset,則在回傳的 Recordset 物件中,Field 物件的 UnderlyingValue 屬性不可用。對部分提供者(例如 Microsoft ODBC Provider for OLE DB 連同 Microsoft SQL Server),可以通過使用 Open 方法傳遞連接字串,根據以前定義的 Connection 物件獨立地創建 Recordset 物件。ADO 仍然創建 Connection 物件,但它不將該物件賦給物件變數。不過,如果正在相同的連接上打開多個 Recordset 物件,就應該顯式創建和打開 Connection 物件,由此將 Connection 物件賦給物件變數。如果在打開 Recordset 物件時沒有使用該物件變數,即使在傳遞相同連接字串的情況下,ADO 也將為每個新的 Recordset 創建新的 Connection 物件。
可以創建所需數量的 Recordset 物件。
打開 Recordset 時,當前記錄位于第一個記錄(如果有),并且 BOF 和 EOF 屬性被設定為 False。如果沒有記錄,BOF 和 EOF 屬性設定是 True。
假設提供者支持相關的功能,可以使用 MoveFirst、MoveLast、MoveNext 和 MovePrevious 方法以及 Move 方法,和 AbsolutePosition、AbsolutePage 和 Filter 屬性來重新確定當前記錄的位置。僅向前 Recordset 物件只支持 MoveNext 方法。當使用 Move 方法訪問每個記錄(或列舉 Recordset)時,可使用 BOF 和 EOF 屬性查看是否移動已經超過了 Recordset 的開始或結尾。
Recordset 物件可支持兩類更新:立即更新和批更新。使用立即更新,一旦呼叫 Update 方法,對資料的所有更改將被立即寫入基本資料源。也可以使用 AddNew 和 Update 方法將值的陣列作為引數傳遞,同時更新記錄的若干欄位。
如果提供者支持批更新,可以使提供者將多個記錄的更改存入快取,然后使用 UpdateBatch 方法在單個呼叫中將它們傳送給資料庫。這種情況應用于使用 AddNew、Update 和 Delete 方法所做的更改。呼叫 UpdateBatch 方法后,可以使用 Status 屬性檢查任何資料沖突并加以解決。
注意 要執行不使用 Command 物件的查詢,應將查詢字串傳遞給 Recordset 物件的 Open 方法。但是,在想要保持命令文本并重復執行或使用查詢引數時,仍然需要 Command 物件。
uj5u.com熱心網友回復:
用sql server作為資料庫,所有客戶端都連它,資料共享即可。uj5u.com熱心網友回復:
如果要看到實時改動,應該怎么做呢?~uj5u.com熱心網友回復:
那就要定時不斷查詢了。當然,可以不必直接查詢目標資料庫表,因為它可能比較大。可以另建一個表,只有一個欄位一條記錄:最新更新時間。客戶端不斷查詢它,與自己上次更新時的時間記錄對比。一旦發現新的更新,就重新查詢目標資料庫表,甚至可以提示有更新。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/110954.html
