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

C# 如何在WinRT应用程序中使用SQLite查询参数?,c#,sqlite,windows-8,windows-runtime,query-parameters,C#,Sqlite,Windows 8,Windows Runtime,Query Parameters,我想在更新sql中使用查询参数,代码如下: internal static int UpdatePhotosetName(string oldPhotosetName, string newPhotosetName) { String qryUpdateBaseTable = "UPDATE PhotraxBaseData SET photosetName = @newName WHERE photosetName = @oldName"; int rowsUpdated;

我想在更新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版

我根据我的发现编写了这段代码,但显然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;
    }

看看这些文档,您没有使用任何sqlite net。无需调用
db.Close
,因为
db
已在使用
块的
中。
db.Execute("UPDATE PhotraxBaseData SET photosetName = ? WHERE photosetName = ?", newName, oldName);