Access 字段类型:【备注】 使用 getString() 读取字段内容是错误的!!!
最近写一个小项目,用到 Access 数据库,其中有一个【表】的字段(body)类型是【备注】,用于存储比较多的文本。
我当时直接使用的 String body = rs.getString("body")
当时测试的时候没发现什么问题,随着字段 body 的内容越来越多时,发现每次读取字段值,只能取得部分数据,数据被截断了。
经过一个晚上的折腾,终于找到原因。
如果 Access 数据库的表的字段类型是【备注】,不能使用 rs.getString() 来读取,当字段值的长度达到一定长度时,rs.getString() 返回的数据会出现不完整,截断的问题。
解决方案:使用 rs.getBinaryStream()
InputStream is = rs.getBinaryStream("body"); ByteArrayOutputStream baos = new ByteArrayOutputStream(8192 * 2); int count; byte[] data = new byte[8192]; try { while ((count = is.read(data)) != -1) { baos.write(data, 0, count); } is.close(); } catch (IOException e) { e.printStackTrace(); System.exit(0); // 退出 } String body = new String(baos.toByteArray(), Charset.forName("gbk"));
参考资料:
java Web开发中用jdbc-odbc桥读取access的文本和备注字段不完全的问题解决方案: https://www.dbmng.com/art-2176.html
使用Java Web对Access数据库的备注字段操作问题: https://blog.csdn.net/softwave/article/details/5500130
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
2018-05-29 修改 iis 的端口号: 80 与 443