我得到了
使用下面的代码时出现System.Data.OleDb.OleDbException(0x80040E10):无法为一个或多个必需参数赋值
错误。变量'orderAASerialAA'设置为autoNumber。
'this.row'是转换为int32
的字符串。
private void updateRow_Click(object sender, EventArgs e)
{
string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Projects_2012\\Project_Noam\\Access\\myProject.accdb";
OleDbConnection myConnection = new OleDbConnection(connectionString);
string myInsertQuery = (String.Format("UPDATE tblOrderAA SET orderAASreialPro='{0}', orderAAcodon1='{1}' " +
" WHERE orderAASerialAA='{2}'", serialPro.Text, codon1.Text, this.row));
OleDbCommand myCommand = new OleDbCommand(myInsertQuery);
myCommand.Connection = myConnection;
myConnection.Open();
myCommand.ExecuteNonQuery();
myCommand.Connection.Close();
}
答案 0 :(得分:2)
该错误消息通常表示输入的列名称不正确。
另外我建议您不要以这种方式创建查询,因为sql注入攻击等。请改用parameterized queries。
答案 1 :(得分:1)
正如你所说'this.row'是转换为int32的字符串。
Replace
WHERE orderAASerialAA='{2}'
With
WHERE orderAASerialAA={2}
'' are used for string type input....
答案 2 :(得分:0)
可能serialPro.Text
或codon1.Text
值包含'?'。这意味着这是parameter,应该由值替换。
尝试使用work with parameters into a oledb query的方法,以避免此行为或SQL注入。