我正在为Windows Phone 8开发一个应用程序,我正在使用SQLite来存储数据(我是这两个领域的新手),而且在尝试插入数据时遇到了问题。对于我的解决方案,我正在使用MVVM模式,所以我想我的插入方法可能是错误的,因为我试图使用泛型类型编写我的CRUD操作,这些类型适用于所有Model类而不是6-7插入方法对于每个Model类,或者可能是我在使用ActionCommand的保存按钮中使用insert方法的方式。我完全迷失了。我已经进行了调试,从我可以看到我的连接等等都很好。
这是我尝试插入时得到的消息;
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)
这是我的插入代码以及我如何使用它;
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但是当我尝试ExecuteNonQuery(obj)时;在insert方法中,我得到一个错误,说ExecuteNonQuery不带1个参数。我是否需要使用此更新SQLite.cs类?
感谢。
答案 0 :(得分:1)
好的,我想我已经解决了。我添加了一些TRY-CATCHES并注意到它实际上并没有创建我的表,因此无处可插入数据。我认为造成这种情况的原因是我将模型类作为类型传递;它以某种方式弄乱它,所以我只是为Models文件夹添加了一个使用,然后只是传入SleepTrackerModel作为类型,它似乎已经修复了问题(我希望),我不再有例外。
答案 1 :(得分:0)
试试这个也许帮助你(SQLite Universal app):http://depblog.weblogs.us/2015/01/06/sqlite-net-and-sqlite-net-extensions-with-universal-apps/