Как устранить ошибку [42000] [IBM] [System i Access ODBC-Treiber] [DB2 fur i5 / OS] SQL0113 - имя - PullRequest
0 голосов
/ 31 января 2012

Я работаю с VB.NET (Windows Forms) и базой данных в AS400 iSeries. Я не буду делать обновление в одной таблице. У меня есть этот код:

    query.Append("Update CLAIMSTATE ")
    query.Append("SET CST_CODE = @cst_code, ")
    query.Append("CST_LABEL = @cst_label, ")
    query.Append("CST_POINTS = @cst_points ")
    query.Append("WHERE CST_ID = @cst_id ")

    Dim command As New OdbcCommand(query.ToString(), con)   

    command.Parameters.Add("@cst_id", OdbcType.BigInt).Value = row.Cells(0).Value
    command.Parameters.Add("@cst_code", OdbcType.Char).Value = row.Cells(1).Value & ""
    command.Parameters.Add("@cst_label", OdbcType.NVarChar).Value = row.Cells(2).Value & ""
    command.Parameters.Add("@cst_points", OdbcType.Decimal).Value = row.Cells(3).Value
    command.ExecuteNonQuery()

В этом случае я получаю эту ошибку: ОШИБКА [42000] [IBM] [System i Access ODBC-Treiber] [DB2 fur i5 / OS] SQL0113 - имя @CST_CODE не допускается.

Кто-нибудь может мне помочь?

Спасибо заранее.

1 Ответ

4 голосов
/ 31 января 2012

OdbcCommand не поддерживает именованные параметры.

Dim command As OdbcCommand = con.CreateCommand()
command.CommandText = "UPDATE CLAIMSTATE " & _
    "SET CST_CODE = ?, CST_LABEL = ?, CST_POINTS = ? WHERE CST_ID = ?"
command.Parameters.Add("@cst_code", OdbcType.Char).Value = row.Cells(1).Value & ""
command.Parameters.Add("@cst_label", OdbcType.NVarChar).Value = row.Cells(2).Value & ""
command.Parameters.Add("@cst_points", OdbcType.Decimal).Value = row.Cells(3).Value
command.Parameters.Add("@cst_id", OdbcType.BigInt).Value = row.Cells(0).Value
command.ExecuteNonQuery()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...