请帮助我,不知道该怎么做。只是想更新信息。但这是错误,并没有给出一个或多个必需参数的值。' 这是我的实际代码:
str = "UPDATE Expenses SET TuitionFee = @TFee, BookFee = @Bfee, MiscellaneousFee = @Mfee, OtherFee = @Ofee WHERE YearLevel = @YL"
mycmd = New OleDbCommand(str, conn)
mycmd.Parameters.AddWithValue("@YL", txtYearLevel.Text)
mycmd.Parameters.AddWithValue("@TFee", txtTFee.Text)
mycmd.Parameters.AddWithValue("@Bfee", txtBFee.Text)
mycmd.Parameters.AddWithValue("@Mfee", txtMFee.Text)
mycmd.Parameters.AddWithValue("@Ofee", txtOFee.Text)
mycmd.ExecuteNonQuery()
答案 0 :(得分:0)
您的SQL语句指定了一个名为OFee
的参数,但您没有提供它。你提供一个名为OtherFee
的人,看起来就像你让名字混淆了一样。
变化:
mycmd.Parameters.AddWithValue("@OtherFee", txtYearLevel.Text)
对此:
mycmd.Parameters.AddWithValue("@OFee", txtYearLevel.Text)
虽然不是导致此错误的原因,但您将所有参数设置为相同的值,这很可能不正确。另外,请注意有关参数化查询的所有注释,这非常重要。
仔细观察后,我发现您使用的OleDbCommand
不支持命名参数。您必须使用?
指定它们,并以与SQL语句相同的顺序添加它们。请参阅MSDN。
OLE DB .NET提供程序不支持传递的命名参数 SQL语句或由a调用的存储过程的参数 CommandType设置为Text时的OleDbCommand。在这种情况下, 必须使用问号(?)占位符。例如:SELECT * FROM 客户WHERE CustomerID =?因此,顺序在哪 OleDbParameter对象必须添加到OleDbParameterCollection中 直接对应于问号占位符的位置 用于命令文本中的参数。