2

我正在嘗試爲Windows Phone 8的PhoneGap使用SQLite插件。我找到了2或3個不同的插件(也許它們都基於相同的基礎),並且都給了我應用程序執行時出錯。 我使用的插件是從這裏:https://github.com/marcucio/Cordova-WP-SqlitePluginWindows Phone 8的SQLitePlugin Phonegap崩潰

我也包括DLL。我正在使用PhoneGap 3.3。當我執行應用程序時,插件被加載(它看起來是正確的)並且一些操作正確地完成(一些CREATE和一些INSERT被執行),但是在給定時刻Visual Studio給我這個錯誤無限次:

An exception of type 'System.Security.SecurityException' occurred in mscorlib.ni.dll and wasn't handled before a managed/native boundary 
An exception of type 'System.Security.SecurityException' occurred in mscorlib.ni.dll and wasn't handled before a managed/native boundary 
A first chance exception of type 'System.IO.IsolatedStorage.IsolatedStorageException' occurred in mscorlib.ni.dll 

我試過其他類似的插件,錯誤仍然出現。

與此問題相關的stackoverflow中的其他線程沒有解決問題。應用程序總是在IsolatedStorage操作中崩潰。

任何人都有同樣的問題,可以解決它?如果我不執行任何INSERT操作,插件不會崩潰。

謝謝。

回答

1

我有使用Community.CsharpSqlite.WinPhone相同的問題,可能我們有同樣的問題。

發生這種情況時,我做了一個INSERT OR REPLACEINSERT OR IGNORE與主表是主鍵是TEXT和有NOT NULL約束。如果主鍵是INTEGERAUTOINCREMENT,它工作正常。

例如:

CREATE TABLE table1 (
    tableid TEXT NOT NULL, 
    value TEXT NOT NULL, 
    PRIMARY KEY(tableid) 
); 

INSERT or REPLACE INTO table1 (tableid, value) VALUES ("id1","test"); 

如果你的id列有NOT NULL約束,SQLite的將返回System.Security.SecurityException。嘗試刪除此約束:

CREATE TABLE table1 (
    tableid TEXT, 
    value TEXT NOT NULL, 
    PRIMARY KEY(tableid) 
); 

這是一個錯誤,在其他平臺(Android,iOS設備等),該表可以有NOT NULL約束,它工作正常。