【发布时间】:2015-04-25 07:16:28
【问题描述】:
我正在为 Windows Phone 8 开发一个应用程序,并且我正在使用 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)
这是我的插入代码以及我如何使用它;
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);在插入方法中,我收到一条错误消息,指出 ExecuteNonQuery 不接受 1 个参数。我需要用这个或什么来更新 SQLite.cs 类吗?
谢谢。
【问题讨论】:
-
查看异常详情。它将包含来自 SQLite 的错误字符串,解释出了什么问题。
标签: c# sqlite windows-phone-8