Ошибка при использовании команды UPDATE в SQL с использованием C # - PullRequest
1 голос
/ 10 декабря 2011

Я получаю

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 ]

2 голосов
/ 10 декабря 2011

В этом сообщении об ошибке обычно указывается неверно введенное имя столбца.

Также я хотел бы предложить, чтобы вы не создавали запросы таким образом из-за SQL-атак и т. Д. Вместо этого используйте параметризованные запросы .

1 голос
/ 10 декабря 2011

Как вы сказали, this.row - строка, которая конвертируется в int32.

Replace
WHERE orderAASerialAA='{2}'
With
WHERE orderAASerialAA={2}

'' are used for string type input....
0 голосов
/ 10 декабря 2011

Возможно, значения serialPro.Text или codon1.Text содержат символ '?'.Это означает, что это параметр , который следует заменить значением.

Попробуйте правильно работать с параметрами в запросе oledb , чтобы избежать такого поведения или внедрения SQL.

...