C# · 12月 24, 2021

c# – 来自.NET的参数化DB2查询

我试图使用客户端访问ODBC驱动程序使用以下代码从.NET运行针对DB2数据库的参数化查询: var db2Cmd = new OdbcCommand(“INSERT INTO presnlats (LAT) VALUES (@LAT)”,db2Conn);db2Cmd.Parameters.AddWithValue(“@LAT”,insertValue);Console.Out.WriteLine(db2Cmd.ExecuteNonQuery());

执行时,抛出OdbcException:

ERROR [42S22] [IBM][iSeries Access ODBC Driver][DB2 UDB]sql0206 – Column @LAT not in specified tables.

The internets似乎暗示客户端访问ODBC驱动程序支持参数化查询,但此错误似乎表示不同.提供的代码有什么问题吗?

解决方法 你试过用过吗?作为占位符而不是@LAT? var db2Cmd = new OdbcCommand(“INSERT INTO presnlats (LAT) VALUES (?)”,db2Conn);db2Cmd.Parameters.AddWithValue(“LAT”,insertValue);Console.Out.WriteLine(db2Cmd.ExecuteNonQuery());

这是MS Access在使用OdbcConnection / OdbcCommand时所需要的.

您只需要确保您的Parameters.AddWithValue()语句与INSERT语句中的字段列表的顺序相同.传递给AddWithValue()的第一个参数似乎并不重要,尽管按惯例我将它与字段名称相同.