0

有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") 添加参数时,驱动程序尝试将其添加为字符串,这会导致错误。我该如何解决这个问题?

4

1 回答 1

0

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

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

从我能找到的...

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

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

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

于 2014-04-14T13:37:58.573 回答