java - 在Java中插入和读取字符串数组

标签 java database serialization prepared-statement

我正在使用准备好的语句将数组插入到我的数据库中

PreparedStatement pstmt = conn.prepareStatement("INSERT INTO TABLE(stringArray) VALUES (?)");
String[] arr = { "a", " b", "c" };
pstmt.setObject(1, arr);

我按照示例使用 setObject,但 setArray 无法解析,setBlob 也不起作用。

现在,当我阅读它时,我不知道如何处理我的对象来取回数组值!

PreparedStatement pstmt = conn.prepareStatement("SELECT stringArray FROM TABLE WHERE id = 1");
ResultSet rs = pstmt.executeQuery();
rs.next();
Object object = rs.getObject(1);
System.out.println(object.toString());

仅输出

[B@45d0e784

我知道我正在做 object.toString 并且我想要一个数组,但是我该怎么做呢?插入时我需要将其设置为字节还是其他东西?

感谢您的帮助

最佳答案

PreparedStatement#setArray 方法采用 java.sql.Array 作为参数。 尝试-

PreparedStatement pstmt = conn.prepareStatement("INSERT INTO TABLE(stringArray) VALUES (?)");
String[] arr = { "a", " b", "c" };
Array a = conn.createArrayOf("marksArray", arr);
pstmt.setArray(1, arr);

请注意 -

The JDBC driver is responsible for mapping the elements Object array to the default JDBC SQL type defined in java.sql.Types for the given class of Object. The default mapping is specified in Appendix B of the JDBC specification. If the resulting JDBC type is not the appropriate type for the given typeName then it is implementation defined whether an SQLException is thrown or the driver supports the resulting conversion.

关于java - 在Java中插入和读取字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14568223/

相关文章:

java - 奇怪的方法调用优化问题

java - GRPC clojure BigDecimal 到 java BigDecimal

mysql - 从表中优先选择

sql - 用 ruby​​ on rails 模拟对称关系的最佳方法是什么?

c# - 只序列化一个类的一个属性

javascript - 在客户端和服务器之间传输日期时间的最佳方式 (c#/javascript)

java - 如何在java中为我的web服务调用设置连接超时和请求超时

java - 解析数组并提取相同长度的字符串

database - 有为 PostgreSQL 开发的 PL/pgSQL 免费环境吗?

java - Text.getBytes() 返回意外结果