我有一个变量OBJECT_ID
作为OBJECT_ID VARCHAR() FOR BIT DATA NOT NULL
存储在DB2中。
如何检索存储在其中的String
值?
我尝试使用以下代码将Java中的Binary
转换为String
:
String str = resultset.getObject("OBJECT_ID").toString();
int charCode = Integer.parseInt(str,2);
String str1 = new Character((char)charCode).toString();
但它会引发以下情况:
NumberFormatException: For input string : "[B@475e586c"
确定String不是整数但是如何在我的java程序中从DB2中检索String
的{{1}}值?
答案 0 :(得分:2)
由于“toString
的[B”表示类型byte[]
,因此可能存在以下情况:
byte[] b = (byte[]) resultset.getObject("OBJECT_ID");
然后存在String
用于(Unicode)文本而不是二进制数据的问题。 char
是以UTF-16编码的两个字节。
您可以尝试将String滥用为:
String s = new String(b, StandardCharsets.ISO_8859_1); // Bad idea.
这取决于OBJECT_ID。
通常二进制数据可以编码为Base64文本,使用64个ASCII字符作为“数字”。
String s = Base64.getEncoder().encodeToString(b);