このコードは機能していますが、代わりにパラメーターを使用する必要があることはわかっています。
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 のパラメータとして...