package jdbc;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class Demo02 {
private Connection conn;
private PreparedStatement pstmt;
private FileReader fr;
// 保存长文本(LONGTEXT)数据类型
public void saveText() throws SQLException, IOException {
try {
// 1. 获取数据库连接
conn = JDBCUtils.getConnection();
// 2. 预编译 SQL 语句:创建 PreparedStatement 对象包装需要执行的 SQL 语句
String sql = "insert into test(content) values(?)";
pstmt = conn.prepareStatement(sql);
// 3. 为“?”参数传入参数值
// 3.1 获取文件路径
// a.txt文件必须和Demo02.java文件放在同一个文件夹下
// 且 getResource("Demo02.java") 的话,会报错
// 报错信息为:java.lang.NullPointerException
String path = Demo02.class.getResource("a.txt").getPath();
// 3.2 将文件路径包装成 File 对象
File file = new File(path);
// 3.3 将 File 对象包装成 FileReader 对象
/*
3.1 ~ 3.3 需要三步,太繁琐!且getResource("Demo02.java")会报错
直接使用构造器 FileInputStream(String name)
创建 FileInputStream 对象即可,不仅只需一步,而且可读 Java 文件,如下:
FileReader fr = new FileReader("src/jdbc/Demo03.java");
*/
fr = new FileReader(file);
// 3.4 传入参数值
pstmt.setCharacterStream(1, fr);
// 4. 执行 SQL 语句(即 DDL 语句)
pstmt.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
JDBCUtils.close(conn, pstmt);
if (fr != null) {
fr.close();
}
}
}
public static void main(String[] args) throws SQLException, IOException {
Demo02 demo02 = new Demo02();
demo02.saveText();
}
}
JDBC中保存长文本(LONGTEXT)数据类型
于 2022-05-24 20:12:45 首次发布