1.TEXT(CLOB)
MySQL中VARCHAR上限为65535个字节, 如果超出这个范围. 需要设置为TEXT.
LONGTEXT最大可以4G
存储TEXT
File file =newFile("res/ClobDemo.java");
Reader reader =newFileReader(file);
ps.setCharacterStream(1, reader,(int) file.length());
ps.executeUpdate();
//最后要关闭流
reader.close();
读取TEXT
String sql="select file from clob";PreparedStatement ps =conn.prepareStatement(sql);
ResultSet rs =ps.executeQuery();
if(rs.next()) {
Reader reader = rs.getCharacterStream(intcolumnIndex);
// 这个Reader就是从数据库中读取数据的流, 操作这个流来读取数据
BufferedReader br =newBufferedReader(r);
BufferedWriter bw =newBufferedWriter(newFileWriter(
"res/new.txt"));
String s = "";
while((s = br.readLine()) !=null) {
bw.write(s + "\n");
}
bw.flush();
br.close();
r.close();
bw.close();
}
2.BLOB
BLOB用来存储大段的二进制数据, 例如图片, 音频, 视频. LONGBLOB最大4G
存储BLOB
PreparedStatement ps =conn.prepareStatement("insert intobig_binary(file) values(?)");
File file =newFile("src/cn/itcast/jdbc1/clob_blob/IMG_0007.jpg");
InputStream in =newFileInputStream(file);
ps.setBinaryStream(1, in, (int) file.length());
ps.executeUpdate();
读取BLOB
PreparedStatement ps =conn.prepareStatement("select filefrom big_binary");
ResultSet rs =ps.executeQuery();
if(rs.next()) {
InputStream in = rs.getBinaryStream(1);
// 这个InputStream就是从数据库中读取数据的流, 操作这个流来读取数据
File file = new File("res/newgirl.jpg");
FileOutputStream fos = new FileOutputStream(file);
int num = in.available();
byte buffer[] = new byte[num];
while(in.read(buffer,0,num) != -1){
fos.write(buffer);
}
System.out.println("左边");
in.close();
fos.close();
}
理解MySQL TEXT和BLOB数据类型的应用
本文详细解释了MySQL中TEXT和BLOB数据类型的使用场景,包括如何存储大文本和二进制数据,以及如何从数据库读取这些数据。通过实际的SQL语句示例,展示了如何操作这两种数据类型。
2136

被折叠的 条评论
为什么被折叠?



