使用JDBC处理MySQL大数据

大数据也称之为LOB(Large Objects),LOB又分为:clob和blob

clob字符型大型对象用于存储大文本,如历史档案、大部头著作等;blob二进制大型对象用于存储二进制数据,如程序、图象、影音等。

  对MySQL而言只有blob,而没有clob,mysql存储大文本采用的是Text,
  Text:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT
  blob:TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB

使用JDBC处理MySQL的大文本Text

  对于MySQL中的Text类型,可调用如下方法设置

 PreparedStatement.setCharacterStream(index, reader, length);//注意length长度须设置,并且设置为int型

对MySQL中的Text类型,可调用如下方法获取

 Reader reader = resultSet. getCharacterStream(String columnLabel);

string s = resultSet.getString(String columnLabel);

 

例子:

            String contentStr ="";
            String content = "";
            if(rs.next()){
                //使用resultSet.getString("字段名")获取大文本数据的内容
                content = rs.getString("resume");
                //使用resultSet.getCharacterStream("字段名")获取大文本数据的内容
                Reader reader = rs.getCharacterStream("resume");
                char buffer[] = new char[1024];
                int len = 0;
                FileWriter out = new FileWriter("D:\\1.txt");
                while((len=reader.read(buffer))>0){
                    contentStr += new String(buffer);
                    out.write(buffer, 0, len);
                }
                out.close();
                reader.close();
            }

使用JDBC处理MySQL的二进制数据blob

  对于MySQL中的BLOB类型,可调用如下方法设置:

 PreparedStatement.setBinaryStream(i, inputStream, length);

  对MySQL中的BLOB类型,可调用如下方法获取:

InputStream in  = resultSet.getBinaryStream(String columnLabel);
InputStream in  = resultSet.getBlob(String columnLabel).getBinaryStream(); 

代码片段:

if (rs.next()) {
                //InputStream in = rs.getBlob("image").getBinaryStream();//这种方法也可以
                InputStream in = rs.getBinaryStream("image");
                int len = 0;
                byte buffer[] = new byte[1024];
                
                FileOutputStream out = new FileOutputStream("D:\\1.jpg");
                while ((len = in.read(buffer)) > 0) {
                    out.write(buffer, 0, len);
                }
                in.close();
                out.close();
            }

 参考链接:https://www.cnblogs.com/xdp-gacl/p/3982581.html

转载于:https://www.cnblogs.com/huangdabing/p/9187064.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值