【发布时间】: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;
}
【问题讨论】:
-
查看文档,您没有使用任何 sqlite-net。 github.com/praeclarum/sqlite-net
-
无需调用
db.Close,因为db已经在using块中。
标签: c# sqlite windows-8 windows-runtime query-parameters