有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”)添加参数时,驱动程序会尝试将其添加为字符串,这会导致错误。我该如何解决这个问题?
答案 0 :(得分:0)
您正在传递常规字符串。
您需要使用十六进制文字值。
从我能找到的......
command.Parameters.Add("@coid", "\xAA\x23\x90\x9F")
您正在使用哪种DB2平台?如果是EBCDIC平台(IBM i或z / OS),您的字符串可能会出现问题......
但这似乎是一个非常奇怪的需求。该列是否真的定义为4字节二进制字符串? (如果您没有使用unicode,它应该看起来像CHAR(4)FOR BIT DATA。)