您的位置:首页 > 数据库

jdbc读取数据库文本数据

2017-04-06 18:08 375 查看

1.在mysq的mydatabasel数据库中创建一张表

use database;
create table if not exists my_clob_test(
id int primary key auto_increment,
big_text text not null
)charset utf8;

2. 工具类(jdbc连接过程代码)

(1)注册驱动
(2)建立连接
(3)释放资源

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;

import com.mysql.jdbc.Statement;

public final class JdbcUtils {

private static String url = "jdbc:mysql://localhost:3306/mydatabase";
private static String user = "root";
private static String password = "123";

private JdbcUtils() {
}

/**
* 注册驱动
*/
static {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}

/**
* 建立连接
*
* @return
*/
public static Connection getConnection() {
Connection conn = null;

try {
conn = (Connection) DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}

/**
* 释放资源
*
* @param rs
* @param st
* @param conn
*/
public static void free(ResultSet rs, Statement st, Connection conn) {
// 释放ResultSet
try {
if (rs != null)
rs.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 释放Statement
try {
if (st != null)
st.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 释放Connection
try {
if (conn != null)
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}

}

}

}


3.运行下面的函数create()向数据库中插入一条文本数据

/**
* 写数据到表中
* @param name
* @param birthday
* @param money
* @throws IOException
*/
static void create() throws IOException {

Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;

try {
// 2.建立连接
conn = (Connection) JdbcUtils.getConnection();
// 3.创建语句
String sql = "insert into my_clob_test(big_text) values(?)";
ps = (PreparedStatement) conn.prepareStatement(sql);
//将该目录下的文件内容写到数据库的my_clob_test表中
File file = new File("src/cn/itcast/jdbc/JdbcUtilsSing.java");
Reader reader = new BufferedReader(new FileReader(file));
//将“?”代替成数据流
ps.setCharacterStream(1,reader,file.length());

// 4.执行语句
int i = ps.executeUpdate();
reader.close();

System.out.println("i=" + i);

} catch (SQLException e) {
e.printStackTrace();
} finally {
JdbcUtils.free(rs, ps, conn); // 关闭资源
}
}

4.运行下面函数read()读取数据库中的文本数据,然后将内容写到当前目录的copy.java文件中

/**
* 读取text数据
* @throws IOException
*/
static void read() throws IOException {

Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;

try {
// 2.建立连接
conn = (Connection) JdbcUtils.getConnection();
// 3.创建语句
String sql = "select big_text from my_clob_test";
ps = (PreparedStatement) conn.prepareStatement(sql);
// 4.执行语句
rs = ps.executeQuery();

//5.处理结果
while(rs.next()){

// Clob clob = rs.getClob(1);
//Reader reader = clob.getCharacterStream();
//以上两句语句可以使用下面一句代码代替
Reader reader = rs.getCharacterStream(1);

//封装数据源
File file = new File("copy.java");
//创建写数据流
Writer writer =new BufferedWriter(new FileWriter(file));

//创建缓存区
char[] buff = new char[1024];
//读写数据方式1
int len=0;
while((len = reader.read(buff))>0){
writer.write(buff,0,len);
}
//读写数据方式2
// for(int i = 0;(i = reader.read(buff))>0;){
// writer.write(buff,0,i);
// }

writer.close();
reader.close();
}

} catch (SQLException e) {
e.printStackTrace();
} finally {
JdbcUtils.free(rs, ps, conn); // 关闭资源
}
}

总结:以上几步实现了(1)建立java与mysql数据库的连接(2)将text数据写入数据库(3)读取数据库中的text数据
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql jdbc text