【问题标题】:How can I use SQLite query parameters in a WinRT app?如何在 WinRT 应用程序中使用 SQLite 查询参数?
【发布时间】:2014-12-28 09:30:45
【问题描述】:

我想在我的更新 sql 中使用查询参数,并且有这个代码:

internal static int UpdatePhotosetName(string oldPhotosetName, string newPhotosetName)
{
    String qryUpdateBaseTable = "UPDATE PhotraxBaseData SET photosetName = @newName WHERE photosetName = @oldName";
    int rowsUpdated;
    using (var db = new SQLite.SQLiteConnection(App.DBPath))
    {
        SQLiteCommand cmd = new SQLiteCommand(db);
        cmd.CommandText = qryUpdateBaseTable;
        cmd.Parameters.Add(new SQLiteParameter("@newName"));
        cmd.Parameters.Add(new SQLiteParameter("@oldName"));
        Command.Parameters["@newName"].Value = newPhotosetName;
        Command.Parameters["@oldName"].Value = oldPhotosetName;
        rowsUpdated = cmd.ExecuteNonQuery();
        db.Close();
    }
    return rowsUpdated;
}

...但在当前上下文中,以下所有内容都被标记为不可用/不存在:

Parameters
SQLiteParameter
Command

我确实安装了 Sqlite-Net(SQLite.cs 和 SQLiteAsync.cs),以及“SQLite for Windows Runtime (Windows 8.1)”的 3.8.7.1 版

我将此代码基于我发现的 here,但显然 WinRT 执行此操作的方式与更稳重的方式有很大不同。

如何在 WinRT 应用程序中使用查询参数?

更新

我认为这不像一些花哨的 LINQ 那样性感,但它确实有效:

internal static int UpdatePhotosetName(string oldPhotosetName, string newPhotosetName)
{
    String qryUpdateBaseTable = String.Format(
        @"UPDATE PhotraxBaseData SET photosetName = '{0}' WHERE photosetName = '{1}'", 
            newPhotosetName, oldPhotosetName);
    int rowsUpdated;
    using (var db = new SQLite.SQLiteConnection(App.DBPath))
    {
        SQLiteCommand cmd = new SQLiteCommand(db);
        cmd.CommandText = qryUpdateBaseTable;
        rowsUpdated = cmd.ExecuteNonQuery();
    }
    return rowsUpdated;
}

没关系;无论如何,我对我的编译器来说已经太性感了。

更新 2

我想一个人永远不会太性感;毕竟,我会选择 Thomas Levesque 的超修剪外观:

    internal static int UpdatePhotosetName(string oldPhotosetName, string newPhotosetName)
    {
        String qryUpdateBaseTable = "UPDATE PhotraxBaseData SET photosetName = ? WHERE photosetName = ?";
        int rowsUpdated;
        using (var db = new SQLite.SQLiteConnection(App.DBPath))
        {
            rowsUpdated = db.Execute(qryUpdateBaseTable, newPhotosetName, oldPhotosetName); // look, ma: no superfluous code!
        }
        return rowsUpdated;
    }

【问题讨论】:

标签: c# sqlite windows-8 windows-runtime query-parameters


【解决方案1】:
db.Execute("UPDATE PhotraxBaseData SET photosetName = ? WHERE photosetName = ?", newName, oldName);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-04
    • 2013-10-10
    • 2011-12-11
    • 2010-11-17
    • 2016-06-02
    • 1970-01-01
    • 2016-04-28
    • 1970-01-01
    相关资源
    最近更新 更多