在下前段時間用Delphi做了一個單機版的軟件,數據庫用Access,開發過程比較順利。怎知世事難預料,有天客戶提出要在網絡環境下運行此軟件!
相信很多朋友都遇到此類問題。現在有3條路可以走,一條是將Access數據庫升級成SQL Server數據庫,還有一條是仍然用Access,但使得它可以在網絡上共享數據,第三條就是我們今天要討論的,將Access改造成數據庫服務器!
我當時采用了最簡單的辦法,建議客戶將此軟件放在一個完全共享的文件夾裡,哪台機器要用,就創建一個快捷方式。嘿嘿,此方法的最大好處就是不用我再動腦筋。
後來我又想,能不能將Access數據庫改造成類似於服務器的版本呢?
這樣做有如下好處:1、不用安裝Windows Server版本及SQL Server版本,這些軟件安裝麻煩,價格昂貴,對機器的配置要求較高;2、客戶端安裝配置簡便。
我馬上想到了MIDAS技術(現改名為DataSnap)。通過創建一個應用程序服務器,能不能將Access數據庫改造成服務器版本呢?
我馬上動手試驗改造。隨便選一台機器做服務器(操作系統最好在WIN98或以上),用Socket連接方式,在上面放上Access數據庫,運行一次用DataSnap技術改造的應用程序服務器軟件,然後將客戶端軟件拷到另一台機器運行。
這邊有2點要注意:一是服務器上一定要先運行scktsrvr,這個程序Delphi有自帶的,二是一定要將midas.dll文件拷到客戶端的系統文件夾。
結果卻令我不解,客戶端可以讀出服務器上的數據,但卻不能提交更改!
原來的數據連接用的是Jet.OLEDB.4.0,記得我已前用BDE做測試時,連普通DBF文件都可以做服務器呢,問題會不會在這邊?
於是我在ODBC裡配置了一個指向Access數據庫的連接,然後用BDE的Database組件選擇此數據庫別名,重新測試。這一次,一切正常,成功了!
剩下一個問題,就是BDE及ODBC的打包問題。這兩個配置比較麻煩,可以用程序修改注冊表來實現,但還有更簡便的方法。現在很多安裝工具都具備自動配置BDE及ODBC的功能,大家不妨選用這些工具打包。而且,由於采用多層數據庫開發,只要在服務器上配置一遍就可以了,客戶端只需一個額外的MIDAS.DLL文件。
這是我自己試驗的結果,不知誰還有更好的方法,望不吝賜教。