簡體   English   中英

使用MS Access數據庫作為需要打開/保存類型功能的桌面應用程序的文件格式

[英]Using MS Access database as a file format for desktop application needing open / save type functionality

這可能是一個相當新手的設計問題。 我正在努力解決一些需求,並為用戶提供他們正在尋找的體驗...

我寫了一個可以處理大型計算類型的工具。 目前,它由一個類庫和命令行工具(單獨的.NET項目)組成。我們使用Access數據庫格式作為文件類型,因為它可以將所有不同的表保存在一個文件中。 有關該應用程序的其他一些事項:-用戶不多。 無需擔心可伸縮性。 -更新不是很大的問題。 -需要台式機。 不是網絡。 -使用VB和.NET 3.5 SP1

現在,我需要開發一個GUI前端,以允許典型的File / Open和File / Save類型的操作。

用戶期望他們可以打開文件,對其進行一些編輯,然后選擇保存或關閉未保存的文件,而無需將任何更改寫回到文件中。 保存它顯然會將所有影響所有表的更改都保存回該文件。

那么,將臨時文件用於諸如代理之類的東西有意義嗎? 要在用戶“打開”文件時將源Access文件復制到本地臨時文件,然后將其用於編輯會話? 然后,如果用戶“保存”,將本地臨時文件復制回源路徑?

這個問題清楚嗎? 設計恐怖嗎??? 有什么意見或建議嗎?

更新: [也標記有ms-access標簽]另外,我也省略了用戶也希望使用典型的“文件/另存為”功能的事實。 我認為我在這篇文章中提出的設計是傳統上稱為代理設計模式的設計。 之前有沒有人嘗試過使用Access數據庫文件進行此操作(成功!)? 警告或建議的話?

好的,這種方法行得通,但這並不是世界上最出色的設計。 您所說的基本上是交易。 事務是對數據庫的一組原子操作,或者它們全部進入或全部都不做。

通常,您用BEGIN和COMMIT將交易括起來。 這樣,事務就不涉及整個數據庫,而僅涉及您當時正在處理的特定部分。

雖然很難從您的描述中分辨出來。 在您的情況下,也許全部或全部都沒有問題,並且您描述的“訪問文件復制技術”可以很好地工作。

但是,如果用戶希望打開數據庫,在此處進行一些更改,提交它們,然后在那進行一些更改,然后撤消這些更改,那將無法正常工作。

我猜設計不是很好,但是如果您將MS Access數據庫用作某種“方案”文件來進行計算,則此方法是實現所需目標的最簡單方法。

如@drventure所述,通常您將使用事務來控制是否保存更改,但是在您的應用程序中,您必須在打開訪問數據庫並根據用戶的操作來提交或放棄該事務時啟動“全局”事務。 。 但是我不知道,Access如何在長時間處於“打開”狀態的多個表上執行具有多個更改的事務處理...

在這兩種方法中,您都必須處理保存而不關閉應用程序嗎? 對於非常簡單的事務處理方法:提交全局事務並立即開始新事務。 在臨時文件方法中,這可能會涉及更多一點,因為它將需要關閉並重新打開臨時文件,並確保保留或重新建立應用程序的狀態。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM