针对Windows Phone 8的SQLitePlugin Phonegap崩溃

时间:2014-02-25 16:56:54

标签: sqlite cordova windows-phone-8 phonegap-plugins isolatedstorage

我正在尝试为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操作,插件不会崩溃。

谢谢。

1 个答案:

答案 0 :(得分:1)

我使用Community.CsharpSqlite.WinPhone遇到同样的问题,我们可能会遇到同样的问题。

当我使用主表为TEXT且具有INSERT OR REPLACE约束的表执行INSERT OR IGNORENOT 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约束,并且它可以正常工作。