欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

java解析varbinary_java – JdbcTemplate:以字符串形式访问MySQL VARBINARY字段

发布时间:2023/12/10 45 豆豆
生活随笔 收集整理的这篇文章主要介绍了 java解析varbinary_java – JdbcTemplate:以字符串形式访问MySQL VARBINARY字段 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

我无法使用JdbcTemplate将

MySQL的VARBINARY字段作为String读取.我们将字符串缩写(“ABC”,“XYZ”,“LMN”等)存储为VARBINARY(不要问我为什么).奇怪的是,当我使用Connection类/ PreparedStatement路由和普通的旧ResultSets与SqlRowSet时,我读取String没有问题.也就是说,

此代码有效:

String sql = "select MY_VARBINARY_FIELD from MY_TABLE where KEY1=? and KEY2=?";

PreparedStatement stmt = connectionDev.prepareStatement(sql);

prepStmt1.setInt(1, key1);

prepStmt1.setInt(2, key2);

ResultSet rs = stmt.executeQuery();

while (rs.next()) {

String s = rs.getString("MY_VARBINARY_FIELD");

System.out.print(s + " ");

}

**Output:** AHI-1 DKFZp686J1653 FLJ14023 FLJ20069 JBTS3 ORF1 dJ71N10.1

但是这段代码没有:

String sql = "select MY_VARBINARY_FIELD from MY_TABLE where KEY1=? and KEY2=?";

Object[] params = {key1, key2};

SqlRowSet rows = getJdbcTemplate().queryForRowSet(sql, params);

while (rows.next()) {

String s = rows.getString("MY_VARBINARY_FIELD");

System.out.print(s + " ");

}

**Output:** [B@3a329572 [B@4ef18d37 [B@546e3e5e [B@11c0b8a0 [B@399197b [B@3857dc15 [B@10320399

为什么SqlRowSet和ResultSet为VARBINARY生成不同的String表示形式?如何使用JdbcTemplate / SqlRowSet获得“正确”的表示?

谢谢!

马克罗特维尔(下图)回答了这个问题.我得到了这个:

String sql = "select MY_VARBINARY from MY_TABLE where KEY=VALUE";

SqlRowSet rows = getJdbcTemplate().queryForRowSet(sql);

while (rows.next()) {

byte[] varbinary = (byte[]) rows.getObject("MY_VARBINARY");

System.out.println(new String(varbinary));

}

总结

以上是生活随笔为你收集整理的java解析varbinary_java – JdbcTemplate:以字符串形式访问MySQL VARBINARY字段的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。