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字段的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 从无头单链表中删除节点
- 下一篇: 出口同比中国经济三大怪状折射出啥危机?