大数据也称之为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(); }