我正在为Windows phone8开发一个应用程序,我正在使用SQLite来存储数据(我对这两个领域都是新手),在尝试插入数据时遇到了一个问题。对于我的解决方案,我使用了MVVM模式,所以我想可能我的插入方法做错了,因为我试图使用泛型类型来编写CRUD操作,这将适用于所有的模型类,而不是为每个模型类使用6-7个插入方法,或者可能是因为我在保存按钮中使用插入方法的方式使用了一个ActionCommand。我完全搞不懂这一切。我已经添加了调试,从我所能看到的我的连接,等等都是好的。
下面是我尝试插入时得到的消息;
A first chance exception of type 'SQLite.SQLiteException' occurred in SleepTracker.DLL
at SQLite.SQLite3.Prepare2(Database db, String query)
at SQLite.PreparedSqlLiteInsertCommand.Prepare()
at SQLite.PreparedSqlLiteInsertCommand.ExecuteNonQuery(Object[] source)
at SQLite.SQLiteConnection.Insert(Object obj, String extra, Type objType)
at SQLite.SQLiteConnection.Insert(Object obj)
at SleepTracker.DatabaseResources.DBHelper.<>c__DisplayClass4`1.<Insert>b__0()
at SQLite.SQLiteConnection.RunInTransaction(Action action)
at SleepTracker.DatabaseResources.DBHelper.Insert[T](T obj)
这是我的insert的代码以及我是如何使用它的;
public void Insert<T>(T obj) where T : new()
{
using (var conn = new SQLiteConnection(App.ConnectionString))
{
conn.RunInTransaction(() =>
{
conn.Insert(obj);
});
}
}
以及我如何在我的按钮中使用它;
public ICommand SaveButtonCommand
{
get
{
return _saveButtonCommand
?? (_saveButtonCommand = new Resources.ActionCommand(() =>
{
Models.SleepTrackerModel insertSleepData = new Models.SleepTrackerModel
{
Date = SleepDate,
SleepTime = SleepTime,
WakeTime = WakeTime,
Duration = SleepDuration,
Rating = SleepRating
};
_dbHelper.Insert<Models.SleepTrackerModel>(insertSleepData);
}));
}
}
我完全不知道如何解决这个问题,所以任何帮助都是很好的。
此外,我也尝试过遵循本教程;http://dotnetslackers.com/articles/silverlight/Windows-Phone-7-Native-Database-Programming-via-Sqlite-Client-for-Windows-Phone.aspx,但是当我在insert方法中尝试ExecuteNonQuery(obj);时,我得到一个错误,指出ExecuteNonQuery不接受1个参数。我需要用这个或者别的什么来更新SQLite.cs类吗?
谢谢。
发布于 2015-02-24 05:38:05
好了,我想我已经解决了。我又添加了几个TRY-CATCHES,注意到它实际上并没有创建我的表,所以它没有地方插入数据。我认为导致这一问题的原因是当我通过no传递我的模型类作为类型时;它以某种方式搞乱了它,所以我只是为Models文件夹添加了一个使用,然后只是传递了SleepTrackerModel作为类型,它似乎已经解决了这个问题(我希望如此),我没有得到更多的异常。
发布于 2015-02-24 04:26:41
试试这个或许能帮到你(SQLite通用应用):http://depblog.weblogs.us/2015/01/06/sqlite-net-and-sqlite-net-extensions-with-universal-apps/
https://stackoverflow.com/questions/28682702
复制相似问题