2012-01-31 69 views
0

我在AS400 iSeries中使用VB.NET(Windows Forms)和數據庫。我不會在一張桌子上做一個更新。我有這樣的代碼:如何解決ERROR [42000] [IBM] [System i Access ODBC-Treiber] [DB2 fur i5/OS] SQL0113 - 名稱

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

在這種情況下,我得到這個錯誤: ERROR [42000] [IBM] [System i的訪問ODBC-二極管驅動器] [DB2皮毛的i5/OS] SQL0113 - 名稱@CST_CODE不允許。

任何人都可以幫助我嗎?

提前致謝。

回答

4

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() 
+0

非常感謝! – wertyk 2012-01-31 10:30:23