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

本文关键字:十六进制 文字 参数 C#IBM 驱动程序 DB2 | 更新日期: 2023-09-27 17:58:10

有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'"

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

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

您正在传递一个常规字符串。

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

从我所能找到的。。。

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

您使用的DB2平台是什么?如果使用EBCDIC平台(IBM i或z/OS),您的字符串可能在翻译时出现问题。。。

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