2
我有这个代码工作,但我知道我应该使用参数来代替。如何使用N参数从C#更新MS Access中的前N行?
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的参数...
好吧,这是Access的数据库引擎的限制,谢谢,我现在感觉很好,我花了很多时间来尝试做这项工作。 –