package com.rlovep.longtext;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.junit.Test;
import com.rlovep.jdbc.JdbcUtil;
/**
* -- 测试大数据类型
CREATE TABLE longtxt(
id INT PRIMARY KEY AUTO_INCREMENT,
content LONGTEXT,
img LONGBLOB
);
*/
/**
*
* @ClassName: LongTextDao
* @Description: 测试长文本
* @author peace w_peace@163.com
* @date 10 Nov 2015 9:29:02 am
*
*/
public class LongTextDao {
private Connection connection;
private PreparedStatement statement;
private ResultSet rs;
@Test
// 1. 保存大文本数据类型 ( 写longtext):与其他的去吧不大。只是设置位置参数时使用字符输入流
public void testWriteTxt(){
String sql="insert into longtxt(content) values(?)";
//创建字符输入流
FileReader reader=null;
try {
connection=JdbcUtil.getConnection();
statement=connection.prepareStatement(sql);
//或得文件输入路径
String path=LongTextDao.class.getResource("/peace.txt").getPath();
//获得输入字符流
reader=new FileReader(new File(path));
//设置位置参数:型号为字符流
statement.setCharacterStream(1, reader);
//执行
statement.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
}finally{
if(reader!=null)
{
try {
reader.close();
reader=null;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
JdbcUtil.close(connection, statement, rs);
}
}
@Test
// 2. 读取大文本数据类型 ( 读longtext) 读取可以用两种方法,一种直接使用返回的结果获得String类型。一种字符输入流
public void testReadTxt(){
String sql="select content from longtxt";
Reader reader=null;
try {
connection=JdbcUtil.getConnection();
statement=connection.prepareStatement(sql);
rs=statement.executeQuery();
while(rs.next())
{
//第一种读取 使用字符输入流
reader=rs.getCharacterStream("content");
BufferedReader bufferedReader=new BufferedReader(reader);
System.out.println(bufferedReader.readLine());
//第二中读取
String peace=rs.getString("content");
System.out.println(peace);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally{
if(reader!=null)
{
try {
reader.close();
reader=null;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
JdbcUtil.close(connection, statement, rs);
}
}
}