【问题标题】:SQLite insert issue with WP8WP8 的 SQLite 插入问题
【发布时间】: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


【解决方案1】:

好的,我想我已经解决了。我又添加了几个 TRY-CATCHES 并注意到它实际上并没有创建我的表,因此它无处插入数据。我认为造成这种情况的原因是当我通过做我的模型类作为类型传递时;它以某种方式搞砸了,所以我只是为 Models 文件夹添加了一个 using,然后只是将 SleepTrackerModel 作为类型传入,它似乎已经解决了问题(我希望如此),而且我再也没有遇到异常了。

【讨论】:

    【解决方案2】:

    试试这个可能对你有帮助(SQLite 通用应用程序):http://depblog.weblogs.us/2015/01/06/sqlite-net-and-sqlite-net-extensions-with-universal-apps/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多