我有这段代码,但我知道我应该使用参数。
foreach (ListViewItem item in lstViewFuentes.CheckedItems)
{
cmdUpdate.CommandText = "UPDATE (SELECT TOP " + int.Parse(item.SubItems[2].Text) + " seleccionada " +
"FROM PreguntasRespuestas " +
"WHERE nombreFuente = ?) AS pyr " +
"SET pyr.seleccionada='S'";
cmdUpdate.Parameters.Add("@nombreFuente", OleDbType.VarChar).Value = item.SubItems[0].Text ;
cmdUpdate.ExecuteNonQuery();
cmdUpdate.Parameters.Clear();
}
如果您同意我的意见,那么下一段代码就是它的样子,但这会给我一个错误
cmdUpdate.CommandText = "UPDATE (SELECT TOP ? seleccionada " +
"FROM PreguntasRespuestas " +
"WHERE nombreFuente = ?) AS pyr " +
"SET pyr.seleccionada='S'";
foreach (ListViewItem item in lstViewFuentes.CheckedItems)
{
cmdUpdate.Parameters.Add("@numPreguntas", OleDbType.Integer).Value = int.Parse(item.SubItems[2].Text);
cmdUpdate.Parameters.Add("@nombreFuente", OleDbType.VarChar).Value = item.SubItems[0].Text ;
cmdUpdate.ExecuteNonQuery();
cmdUpdate.Parameters.Clear();
}
当我使用上面的块时,我收到一条错误说,SELECT指令包含一个保留字,错过参数或拼写错误等等......我不明白为什么它不采取?作为SELECT TOP中的N的参数...
答案 0 :(得分:1)
Access'db引擎不接受SELECT TOP
的参数。您必须在SQL语句中静态提供该值。