如何在字段输入为 variable/parameter 时创建更新语句

How to create an update statement when the field is entered as a variable/parameter

我正在尝试更新数据库中的 table,但每次按下按钮时,它应该更新同一记录的不同列。关于如何做到这一点有什么想法吗?

table 有列 QuizID(自动编号)、QuizName(字符串)、OutOf(整数)、Question1(整数)、Question2 等。每次按下按钮时,它应该更新下一个 QuestionX 列。

Using cmd As New OleDbCommand("UPDATE Quizzes SET @questionColumn = @questionID WHERE QuizName = @quizName", myConnection)
   cmd.Parameters.Add("@questionColumn", OleDbType.Char).Value = "Question" & questionNumber.ToString()
   cmd.Parameters.Add("@questionID", OleDbType.Integer).Value = questionID
   cmd.Parameters.Add("@quizName", OleDbType.Char).Value = txtQuizName.Text
   cmd.ExecuteNonQuery()
End Using

questionNumber是一个整数,每按一次按钮加1,questionIDtxtQuizName.Text是之前获取的值。

我预计 QuestionX 列会更新,但代码抛出一个错误,指出 @questionColumn 不是 updatable;但是如果我用 Question1 替换它并注释掉参数,它工作正常但不会(显然)改变它正在更新的列。

这次我做错了什么?

您不能将列名绑定到参数。您需要动态构建查询。

Using cmd As New OleDbCommand("UPDATE Quizzes SET Question" & questionNumber.ToString() & " = @questionID WHERE QuizName = @quizName", myConnection)
   cmd.Parameters.Add("@questionID", OleDbType.Integer).Value = questionID
   cmd.Parameters.Add("@quizName", OleDbType.Char).Value = txtQuizName.Text
   cmd.ExecuteNonQuery()
End Using