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

标签 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 " +
                            "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();
}

当我使用上面的 block 时,我收到一条错误消息,说 SELECT 指令包含一个保留字、缺少一个参数或拼写错误等等...我不明白为什么它不需要?作为 SELECT TOP 中 N 的参数...

最佳答案

Access 的数据库引擎将不接受 SELECT TOP 的参数。您必须在 SQL 语句中静态提供该值。

另见 Limit # of records returned based on a form control .

关于c# - 如何使用 N 的参数从 C# 更新 MS Access 中的前 N ​​行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18473467/

相关文章:

c# - GUI在获取数据时未响应

Sql select 在表上插入时速度很慢

VBA x=x+1 的简写形式?

mysql - 安全地将 MS Access 数据库前端连接到 Web 主机上的 MySQL 后端?

c# - 从 C# 应用程序打开 MSQL 过程(使用 System.Diagnostics)

c# - 在 WPF ControlTemplate 中查找控件

c# - 如何在 Visual Studio 中设置 Selendroid?

MySQL ORDER BY 似乎按十六进制排序而不是按字母顺序排序

mysql - 主键中的值偶尔会随时间变化

date - 在一列中获取最大值(日期)的完整记录