我正在尝试为Windows Phone 8使用针对PhoneGap的SQLite插件。我发现了2个或3个不同的插件(可能所有插件都基于相同的基础)并且在执行应用程序时都给出了错误。 我正在使用的插件来自:https://github.com/marcucio/Cordova-WP-SqlitePlugin
我也包括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操作,插件不会崩溃。
谢谢。
答案 0 :(得分:1)
我使用Community.CsharpSqlite.WinPhone
遇到同样的问题,我们可能会遇到同样的问题。
当我使用主表为TEXT且具有INSERT OR REPLACE
约束的表执行INSERT OR IGNORE
或NOT NULL
时,就会发生这种情况。如果主键为INTEGER
和AUTOINCREMENT
,则可以正常使用。
例如:
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
约束,并且它可以正常工作。