DB2 C#IBM驱动程序中的参数化十六进制文字

时间:2014-04-14 12:31:22

标签: c# sql c#-4.0 db2 sql-parametrized-query

有DB2数据库。

有C#.NET应用程序,它使用IBM.Data.DB2驱动程序连接到数据库(IBMDB2)。

有一个参数化查询(DB2Command对象,初始化为): "SELECT $coid_ref FROM db.$ext WHERE $coid = @coid"

需要用十六进制文字替换@coid。例如,它应该像这样执行: "SELECT $coid_ref FROM db.$ext WHERE $coid = x'AA23909F'"

但是,当我尝试通过command.Parameters.Add(“@ coid”,“AA23909F”)添加参数时,驱动程序会尝试将其添加为字符串,这会导致错误。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您正在传递常规字符串。

您需要使用十六进制文字值。

从我能找到的......

command.Parameters.Add("@coid", "\xAA\x23\x90\x9F")

您正在使用哪种DB2平台?如果是EBCDIC平台(IBM i或z / OS),您的字符串可能会出现问题......

但这似乎是一个非常奇怪的需求。该列是否真的定义为4字节二进制字符串? (如果您没有使用unicode,它应该看起来像CHAR(4)FOR BIT DATA。)