San*_*go 2 java mysql bytearray
我有一个字节数组,其值[B@6c89db9a已经将此值存储在MySQL数据库中作为字符串表示 -mybyteArray.toString()
我想从数据库中检索保存的值,并使用原始字节数组的字符串值创建一个新的字节数组.
我已经尝试了Java Byte Array到String By By By Array的示例
但是我没有得到原始的字节数组值.它产生了不同的价值.任何人都可以建议吗?
我有一个带有值的字节数组[B @ 6c89db9a我存储了这个值...
这不是一个价值.它是一个完全无用的(Java之外)哈希码.toString()数组的方法不会打印数组的内容.数组不会覆盖toString(),因此Object.toString()被调用.
如果你想在MySQL中存储一个任意字节的数组,你会想要使用一种BLOB类型(或者可能VARBINARY?它已经有一段时间了,因为我使用了MySQL,但它从快速谷歌出现它们在现代版本中基本相同)在你的表中,并存储字节:
create table example(some_bytes BLOB);
您准备好的陈述如下:
String query = "INSERT INTO example (some_bytes) VALUES (?)";
PreparedStatement pstmt = conn.prepareStatement(query);
Run Code Online (Sandbox Code Playgroud)
你可以通过以下方式插入这些字节:
pstmt.setBytes(1, myByteArray);
pstmt.execute();
Run Code Online (Sandbox Code Playgroud)
编辑以添加注释:数组中有一些字节.如果这些字节表示字符串并且您知道字符集是什么,则String使用String带有字符集的构造函数将它们转换为a :
String myString = new String(bytes, knownCharset);
Run Code Online (Sandbox Code Playgroud)
例如,如果它们代表UTF-8字符串,您将使用:
String myString = new String(byteArray, Charset.forName("UTF-8"));
Run Code Online (Sandbox Code Playgroud)