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

posted @ 2022-05-29 07:48  personnel  阅读(233)  评论(0编辑  收藏  举报
友情链接:图片批量处理工具 gif动态图制作工具 制作电子相册 图片排版工具 制作淘宝主图视频 MKScript 鼠标键盘自动化脚本语言