使用C#在SQL中使用UPDATE命令时出错

时间:2011-12-10 17:50:51

标签: c# sql database oledb

我得到了

  

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();

}

3 个答案:

答案 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.Textcodon1.Text值包含'?'。这意味着这是parameter,应该由值替换。

尝试使用work with parameters into a oledb query的方法,以避免此行为或SQL注入。