最近項目中要用到本地的文件型數據庫,很自然的選擇了SQLite。
以前在.net framework 2.0/3.5下使用過SQLite,一直都沒有什么問題。
不過這次在.net framework 4.0中開始是怎么都不好用,后來看到網上有人說System.Data.SQLite(1.0.66)是在.net framework 2.0平台下編譯的,有的給出了在4.0平台下的配置方法,看看這個版本是2010年更新了好像就再也沒動過。不會吧,這么好的項目應該不會掛掉吧。又一頓谷哥后,發現了http://system.data.sqlite.org/,果然還活着,而且已經有.net framework 4.0平台下編譯的版本了(1.0.81),用上后發現Spring.NET還沒有支持到這個版本的DbPrivoder,照着文檔,打開Spring.NET源碼,按照文檔上說的參考以前版本的寫了個配置文件(其實就是把以前版本號換了換),F5,可以正常運行了。
開發中沒問題了,但是到客戶機器部署時又出問題了,有的機器好用有的機器不好用。單獨做了個讀寫SQLite的小程序,最終確定還是System.Data.SQLite的問題。
報的異常是 Could not load file or assembly 'System.Data.SQLite.dll' or one of its dependencies.
但是System.Data.SQLite.dll、System.Data.SQLite.dll兩個文件都在啊,用ILSpy打開System.Data.SQLite.dll看了一下,引用的貌似都是framework本身的東西了。
又回去度娘、谷哥,看到有人說是需要用到SQLite.Interop.dll,於是直接拷貝到目錄、引用都試過了,還是報相同的異常。
也有人說是32、64位的問題,但是我的都是32位的,只是個客戶端程序,也沒有IIS等環境的影響。
繼續回去找谷哥問問吧,看到stackoverflow有個回答說 System.Data.SQLite.dll is a mixed assembly, i.e. it contains both managed code and native code.,下面還有人說需要安裝Microsoft Visual C++ 2010 SP1 Redistributable Package (x86),看起來有點道理,試了一下果然問題解決了。
一直以來都以為System.Data.SQLite只要安裝了.net framework就可以讀SQLite數據庫了,原來還需要安裝Microsoft Visual C++ Redistributable Package啊。
