如何使用N的参数从C#更新MS Access中前N行?

如何使用N的参数从C#更新MS Access中前N行?,c#,sql,ms-access,select,C#,Sql,Ms Access,Select,我有这个代码,但我知道我应该使用参数代替 foreach (ListViewItem item in lstViewFuentes.CheckedItems) { cmdUpdate.CommandText = "UPDATE (SELECT TOP " + int.Parse(item.SubItems[2].Text) + " seleccionada " + "FROM PreguntasRespuestas " +

我有这个代码,但我知道我应该使用参数代替

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'数据库引擎将不接受SELECT TOP的参数。必须在SQL语句中静态提供该值


另请参见。

好的,这是访问数据库引擎的一个限制,谢谢,我现在感觉很好,我花了很多时间试着让它工作。