JDBC学习笔记(8):访问大段文本数据

数据库准备:

1 create table clob_test
2 (
3     id integer not null auto_increment,
4     big_text text not null,
5     primary key(id)
6 );

将大段文本添加进数据库:

 1 public static void create() throws SQLException, IOException {
 2         Connection conn = null;
 3         PreparedStatement ps = null;
 4         ResultSet rs = null;
 5         try {
 6             conn = JdbcUtils.getConnection();
 7             String sql = "insert into clob_test(big_text) values(?)";
 8             ps = conn.prepareStatement(sql);
 9             File file = new File("src/com/xxyh/jdbc/CRUD.java");
10             Reader reader = new BufferedReader(new FileReader(file));
11
12             ps.setCharacterStream(1, reader, file.length());
13             int i = ps.executeUpdate();
14             reader.close();
15             System.out.println("i========" + i);
16         } finally {
17             JdbcUtils.close(rs, ps, conn);
18         }
19     }

从数据库中读取大段文本:

 1 public static void read() throws SQLException, IOException {
 2         Connection conn = null;
 3         Statement stmt  = null;
 4         ResultSet rs = null;
 5
 6         try {
 7             conn = JdbcUtilsSingleton.getInstance().getConnection();
 8             stmt = conn.createStatement();
 9             String sql = "select big_text from clob_test";
10             rs = stmt.executeQuery(sql);
11
12             while (rs.next()) {
13                 Clob clob = rs.getClob(1);
14                 Reader reader = clob.getCharacterStream();
15 //                reader = rs.getCharacterStream(1);
16                 File file = new File("CRUD_bak.java");
17                 Writer writer = new BufferedWriter(new FileWriter(file));
18                 char[] buffer = new char[1024];
19                 for (int i = 0; (i=reader.read(buffer)) > 0;) {
20                     writer.write(buffer, 0, i);
21                 }
22                 writer.close();
23                 reader.close();
24             }
25
26         } finally {
27             JdbcUtilsSingleton.getInstance().close(rs, stmt, conn);
28         }
29     }
时间: 2024-10-13 22:26:07

JDBC学习笔记(8):访问大段文本数据的相关文章

用jdbc访问大段文本数据

1 package it.cast.jdbc; 2 3 import java.io.BufferedReader; 4 import java.io.BufferedWriter; 5 import java.io.File; 6 import java.io.FileNotFoundException; 7 import java.io.FileReader; 8 import java.io.FileWriter; 9 import java.io.IOException; 10 impo

JDBC学习笔记:用JDBC处理大段数据

1.数据库——创建数据表 1 create table clob_test 2 ( 3 id integer not null auto_increment primary key, 4 big_text text not null 5 ); 2.用JDBC处理大段文本数据 (1)将文本数据写入数据库 1 @Test 2 public void create() throws SQLException, IOException { 3 Connection conn = null; 4 Prep

JDBC学习笔记(一)

public static void main(String[] args) { ResultSet rs = null; Statement stmt = null; Connection conn = null; try { /** * 1.加载JDBC驱动程序: * 加载目标数据库驱动到JVM * 成功加载后,会将Driver类的实例注册到DriverManager类 * oracle-Driver:oracle.jdbc.driver.OracleDriver * MySQL-Drive

quick-cocos2d-x学习笔记【4】——添加文本

文本的添加在quick中被封装在ui类中,它可以创建EditBox,菜单以及文本,文本总得来说可以创建TTF和BMFont两种. api对于它的说明很详细,ui.newBMFontLabel(params),参数中 text: 要显示的文本 font: 字体文件名 align: 文字的水平对齐方式(可选) x, y: 坐标(可选) 所以我们创建一个文本可以使用这样的代码, function MyScene:ctor() local labelBMFont = ui.newBMFontLabel(

大段文本的多个关键字高亮

前几天看到有人提在网页中实时高亮关键字,大约6万多个字中高亮600个关键字,用户可以随时修改并及时高亮,也就是onkeyup时做高亮,说用正则在IE下效率不理想 想了下自已给了一个实现方案:比如这段文本是:"这是一大段文本,一大段文本哦"关键字是:["这是","大段文本","哦"]首先找出最长的关键字,并把这些关键字弄成map,如: var keys = ['这是', '这里是', '文本', '一']; var prepar

APUE学习笔记:第六章 系统数据文件和信息

6.1 引言 UNIX系统的正常运行需要使用大量与系统有关的数据文件,针对这些数据文件的可移植接口是本章的主题.本章还介绍了系统标识函数.时间和日期函数 6.2 口令文件 UNIX系统的口令文件包含了下列各字段,这些字段包含在<pwd.h>中定义的passwd结构中 用户名 char *pw_name 加密口令 char *pw_passwd 数值用户ID uid_t pw_uid 数值组ID gid_t pw_gid 注释字段 char *pw_gecos 初始工作目录 char *pw_d

Wireshark学习笔记——如何快速抓取HTTP数据包

0.前言 在火狐浏览器和谷歌浏览器中可以非常方便的调试network(抓取HTTP数据包),但是在360系列浏览器(兼容模式或IE标准模式)中抓取HTTP数据包就不那么那么方便了.虽然也可使用HttpAnalyzer等工,但是毕竟都是收费软件.只需通过合适的过滤和操作,Wireshark也可抓取HTTP请求和响应.下面便说明具体操作. 假设在8080端口运行一个HTTP服务器,本例中使用Python Flask运行一个HTTP服务并侦听8080端口,实现一个简单的加法运算,网页中通过ajax提交

学习笔记:Oracle dul数据挖掘 导出Oracle11G数据文件坏块中表中

试验模拟导出Oracle 11G数据库中数据文件坏块中表中的数据 以前一直以为dul对应的版本只能恢复最高的数据库版本一致,今天测试发现dul 10可以恢复11g最新版的数据库.模拟环境 SQL> select * from v$version; BANNER -------------------------------------------------------------------------------- Oracle Database 11g Enterprise Edition

C++学习笔记17,构造函数体内初始化数据成员与构造函数初始化器的区别(一)

在构造体内初始化数据成员是最常见的方法. 例如: #include <iostream> using namespace std; class A { private: int i; string s; public: A(int ii,string ss){ //在构造函数体内初始化数据成员 i=ii; s=ss; cout<<"ctor:i="<<i<<",s="<<s<<endl; } /