Java - 在数据库中将字节数组存储为字符串并使用字符串值创建字节数组

标签 java mysql arrays

我有一个值为 [B@6c89db9a 的字节数组,我已将该值作为字符串表示形式存储在 MySQL 数据库中 - mybyteArray.toString()

我想从数据库中检索保存的值并使用原始字节数组的字符串值创建一个新的字节数组。

我试过这些例子Java Byte Array to String to Byte Array

byte to string and vice versa

但是我没有得到原始字节数组值。它正在产生不同的值(value)。任何人都可以请教吗?

最佳答案

I have a byte array with the value [B@6c89db9a I have stored this value ...

这不是一个值。这是一个完全无用的(在 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);

然后您将通过以下方式插入这些字节:

pstmt.setBytes(1, myByteArray);
pstmt.execute();

编辑以从评论中添加:您在数组中有一些字节。如果这些字节代表一串字符并且您知道字符集是什么,则可以使用采用字符集的 String 构造函数将它们转换为 String:

String myString = new String(bytes, knownCharset); 

例如,如果它们表示一个 UTF-8 字符串,您将使用:

String myString = new String(byteArray, Charset.forName("UTF-8"));

关于Java - 在数据库中将字节数组存储为字符串并使用字符串值创建字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17498265/

相关文章:

java - Eclipse (Helios) 调试器 - 在 Debug模式和运行模式下获得不同的结果

java - 为复选框过滤 JTable 的按钮被选中

mysql - SQL 中的保留分析

java - 返回 float 组

ios - JSON 到自定义对象数组 (Swift)

java - HttpClient 在处理最大数量的请求时会阻塞?

java - 将参数传递给 Java 方法内定义的方法

php - 如何用php将html转换成pdf?

mysql - 找出员工的总余额

arrays - 如何使用 Bash 打印特定的数组行?