处理大数据对象

CLOB中可以存储海量文字

BLOB中可以存储海量二进制数据

如果程序中要想处理这样的大对象操作,则必须使用PreparedStatement完成,所有的内容要通过IO流的方式从大文本字段中保存和读取。

写入大文本数据

汉字的编码要改成gbk

//=================================================
// File Name : Clob_demo
//------------------------------------------------------------------------------
// Author : Common import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.sql.*;
import java.text.SimpleDateFormat; //主类
//Function : Clob_demo
public class Clob_demo { //定义MySQL的数据库驱动程序
public static final String DBDRIVER = "org.gjt.mm.mysql.Driver";
//定义MySQL数据库的连接地址
public static final String DBURL = "jdbc:mysql://localhost:3306/mysql_demo";
//MySQL数据库的连接用户名
public static final String DBUSER = "root";
//MySQL数据库的连接密码
public static final String DBPASS = "123456"; public static void main(String[] args) throws Exception{
// TODO 自动生成的方法存根
Connection conn = null; //数据库连接
PreparedStatement pstmt = null; //数据库操作 String name = "张三";
String sql = "INSERT INTO userclob(name,note) VALUES (?,?) ";
Class.forName(DBDRIVER); //加载驱动程序
//连接MySQL数据库时,要写上连接的用户名和密码
conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS);
pstmt = conn.prepareStatement(sql); //实例化PreparedStatement
//声明一个File对象,用于找到要操作的大文本文件
File f = new File("/home/common/software/database/zhangsan.txt");
InputStream input = null; //通过输入流读取内容
input = new FileInputStream(f); //通过输入流读取文件
pstmt.setString(1, name); //设置第一个“?”的内容
pstmt.setAsciiStream(2,input, (int)f.length()); //设置输入流
pstmt.executeUpdate(); //执行数据库更新操作
pstmt.close(); //操作关闭
conn.close(); //数据库关闭
} }

读取大文本字段

//=================================================
// File Name : Clob_demo
//------------------------------------------------------------------------------
// Author : Common import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.sql.*;
import java.text.SimpleDateFormat;
import java.util.Scanner; //主类
//Function : Clob_demo
public class Clob_demo { //定义MySQL的数据库驱动程序
public static final String DBDRIVER = "org.gjt.mm.mysql.Driver";
//定义MySQL数据库的连接地址
public static final String DBURL = "jdbc:mysql://localhost:3306/mysql_demo";
//MySQL数据库的连接用户名
public static final String DBUSER = "root";
//MySQL数据库的连接密码
public static final String DBPASS = "123456"; public static void main(String[] args) throws Exception{
// TODO 自动生成的方法存根 Connection conn = null; //数据库连接
PreparedStatement pstmt = null; //数据库操作
ResultSet rs = null; //保存结果集 int id = 2;
String sql = "SELECT name,note FROM userclob WHERE id=?";
Class.forName(DBDRIVER); //加载驱动程序
//连接MySQL数据库时,要写上连接的用户名和密码
conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS);
pstmt = conn.prepareStatement(sql); //实例化PreparedStatement
pstmt.setInt(1, id); //设置查询的id
rs = pstmt.executeQuery(); //查询 while(rs.next()){
String name = rs.getString(1);
StringBuffer note = new StringBuffer();
System.out.println("姓名:"+name);
InputStream input = rs.getAsciiStream(2); //接收全部的文本数据
Scanner scan = new Scanner(input); //接收数据
scan.useDelimiter("\r\n"); //将文件换行作为分隔符
while(scan.hasNext()){
note.append(scan.next()).append("\n"); //不断读取内容
}
System.out.println("内容:"+note);
input.close();
} pstmt.close(); //操作关闭
conn.close(); //数据库关闭
} }

//=================================================
// File Name : Clob_demo
//------------------------------------------------------------------------------
// Author : Common import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.sql.*;
import java.text.SimpleDateFormat;
import java.util.Scanner; //主类
//Function : Clob_demo
public class Clob_demo { //定义MySQL的数据库驱动程序
public static final String DBDRIVER = "org.gjt.mm.mysql.Driver";
//定义MySQL数据库的连接地址
public static final String DBURL = "jdbc:mysql://localhost:3306/mysql_demo";
//MySQL数据库的连接用户名
public static final String DBUSER = "root";
//MySQL数据库的连接密码
public static final String DBPASS = "123456"; public static void main(String[] args) throws Exception{
// TODO 自动生成的方法存根
// Connection conn = null; //数据库连接
// PreparedStatement pstmt = null; //数据库操作
//
// String name = "张三";
// String sql = "INSERT INTO userclob(name,note) VALUES (?,?) ";
// Class.forName(DBDRIVER); //加载驱动程序
// //连接MySQL数据库时,要写上连接的用户名和密码
// conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS);
// pstmt = conn.prepareStatement(sql); //实例化PreparedStatement
// //声明一个File对象,用于找到要操作的大文本文件
// File f = new File("/home/common/software/database/无标题文档");
// InputStream input = null; //通过输入流读取内容
// input = new FileInputStream(f); //通过输入流读取文件
// pstmt.setString(1, name); //设置第一个“?”的内容
// pstmt.setAsciiStream(2,input, (int)f.length()); //设置输入流
// pstmt.executeUpdate(); //执行数据库更新操作
// pstmt.close(); //操作关闭
// conn.close(); //数据库关闭 // Connection conn = null; //数据库连接
// PreparedStatement pstmt = null; //数据库操作
// ResultSet rs = null; //保存结果集
//
// int id = 2;
// String sql = "SELECT name,note FROM userclob WHERE id=?";
// Class.forName(DBDRIVER); //加载驱动程序
// //连接MySQL数据库时,要写上连接的用户名和密码
// conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS);
// pstmt = conn.prepareStatement(sql); //实例化PreparedStatement
// pstmt.setInt(1, id); //设置查询的id
// rs = pstmt.executeQuery(); //查询
//
// while(rs.next()){
// String name = rs.getString(1);
// StringBuffer note = new StringBuffer();
// System.out.println("姓名:"+name);
// InputStream input = rs.getAsciiStream(2); //接收全部的文本数据
// Scanner scan = new Scanner(input); //接收数据
// scan.useDelimiter("\r\n"); //将文件换行作为分隔符
// while(scan.hasNext()){
// note.append(scan.next()).append("\n"); //不断读取内容
// }
// System.out.println("内容:"+note);
// input.close();
// }
//
// pstmt.close(); //操作关闭
// conn.close(); //数据库关闭 Connection conn = null; //数据库连接
PreparedStatement pstmt = null; //数据库操作
ResultSet rs = null; //保存结果集 int id = 2;
String sql = "SELECT name,note FROM userclob WHERE id=?";
Class.forName(DBDRIVER); //加载驱动程序
//连接MySQL数据库时,要写上连接的用户名和密码
conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS);
pstmt = conn.prepareStatement(sql); //实例化PreparedStatement
pstmt.setInt(1, id); //设置查询的id
rs = pstmt.executeQuery(); //查询 while(rs.next()){
String name = rs.getString(1); //取出name列的内容
Clob c = rs.getClob(2); //取出大文本数据
String note = c.getSubString(1, (int)c.length()); //CLOB开始的位置为1
System.out.println("姓名:"+name);
System.out.println("内容:"+note);
c.truncate(100);
System.out.println("部分的读取内容:"+c.getSubString(1, (int)c.length()));
} pstmt.close(); //操作关闭
conn.close(); //数据库关闭
} }

处理BLOB数据

create table userblob(id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(30) NOT NULL,photo LONGBLOB);
//=================================================
// File Name : Blob_demo
//------------------------------------------------------------------------------
// Author : Common import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.sql.*;
import java.text.SimpleDateFormat;
import java.util.Scanner; //主类
//Function : Blob_demo
public class Blob_demo { //定义MySQL的数据库驱动程序
public static final String DBDRIVER = "org.gjt.mm.mysql.Driver";
//定义MySQL数据库的连接地址
public static final String DBURL = "jdbc:mysql://localhost:3306/mysql_demo";
//MySQL数据库的连接用户名
public static final String DBUSER = "root";
//MySQL数据库的连接密码
public static final String DBPASS = "123456"; public static void main(String[] args) throws Exception{
// TODO 自动生成的方法存根 // Connection conn = null; //数据库连接
// PreparedStatement pstmt = null; //数据库操作
//
// String name = "赵六";
// String sql = "INSERT INTO userblob(name,photo) VALUES (?,?) ";
// Class.forName(DBDRIVER); //加载驱动程序
// //连接MySQL数据库时,要写上连接的用户名和密码
// conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS);
// pstmt = conn.prepareStatement(sql); //实例化PreparedStatement
// //声明一个File对象,用于找到要操作的大文本文件
// File f = new File("/home/common/software/database/photo.jpg");
// InputStream input = null; //通过输入流读取内容
// input = new FileInputStream(f); //通过输入流读取文件
// pstmt.setString(1, name); //设置第一个“?”的内容
// pstmt.setBinaryStream(2,input, (int)f.length()); //设置输入流
// pstmt.executeUpdate(); //执行数据库更新操作
// pstmt.close(); //操作关闭
// conn.close(); //数据库关闭 Connection conn = null; //数据库连接
PreparedStatement pstmt = null; //数据库操作
ResultSet rs = null; //保存结果集 int id = 1;
String sql = "SELECT name,photo FROM userblob WHERE id=?";
Class.forName(DBDRIVER); //加载驱动程序
//连接MySQL数据库时,要写上连接的用户名和密码
conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS);
pstmt = conn.prepareStatement(sql); //实例化PreparedStatement
pstmt.setInt(1, id); //设置查询的id
rs = pstmt.executeQuery(); //查询 while(rs.next()){
String name = rs.getString(1);
StringBuffer note = new StringBuffer();
System.out.println("姓名:"+name);
InputStream input = rs.getBinaryStream(2); //接收全部的大文本数据
FileOutputStream out = null;
out = new FileOutputStream(new File("/home/common/software/database/photo_copy.jpg"));
int temp = 0;
while((temp = input.read()) != -1){ //边读边写
out.write(temp);
}
input.close();
out.close();
}
pstmt.close(); //操作关闭
conn.close(); //数据库关闭
} }

使用Blob读取内容

//=================================================
// File Name : Blob_demo
//------------------------------------------------------------------------------
// Author : Common import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.sql.*;
import java.text.SimpleDateFormat;
import java.util.Scanner; //主类
//Function : Blob_demo
public class Blob_demo { //定义MySQL的数据库驱动程序
public static final String DBDRIVER = "org.gjt.mm.mysql.Driver";
//定义MySQL数据库的连接地址
public static final String DBURL = "jdbc:mysql://localhost:3306/mysql_demo";
//MySQL数据库的连接用户名
public static final String DBUSER = "root";
//MySQL数据库的连接密码
public static final String DBPASS = "123456"; public static void main(String[] args) throws Exception{
// TODO 自动生成的方法存根 Connection conn = null; //数据库连接
PreparedStatement pstmt = null; //数据库操作
ResultSet rs = null; //保存结果集 int id = 1;
String sql = "SELECT name,photo FROM userblob WHERE id=?";
Class.forName(DBDRIVER); //加载驱动程序
//连接MySQL数据库时,要写上连接的用户名和密码
conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS);
pstmt = conn.prepareStatement(sql); //实例化PreparedStatement
pstmt.setInt(1, id); //设置查询的id
rs = pstmt.executeQuery(); //查询 if(rs.next()){
String name = rs.getString(1);
System.out.println("姓名:"+name);
Blob b = rs.getBlob(2); //读取Blob数据
FileOutputStream out = null;
out = new FileOutputStream(new File("/home/common/software/database/photo_copy2.jpg"));
out.write(b.getBytes(1, (int)b.length()));
out.close();
}
pstmt.close(); //操作关闭
conn.close(); //数据库关闭
} }

Java数据库——处理大数据对象的更多相关文章

  1. java 跨数据库导入大数据

    java 跨数据库导入大数据 /** * java程序跨服务器跨数据库批量导入导出百万级数据 * @param args * @throws Exception */ public static vo ...

  2. Java在处理大数据的时候一些小技巧

    Java在处理大数据的时候一些小技巧 发布时间:2013-05-09 00:00:00 来源:中国IT实验室 作者:佚名   关键字:Java 众所周知,java在处理数据量比较大的时候,加载到内存必 ...

  3. 处理大数据对象clob数据和blob数据

    直接上下代码: package com.learn.jdbc.chap06; import java.io.File; import java.io.FileInputStream; import j ...

  4. 开发入门,学Java还是学大数据?

    经常有人问,我想学习开发,到底是学Java好还是学大数据好?或者是,学习大数据还有必要学Java吗?      依我说,这个提问的标准答案是:两者都学.      先来甩两张图.      一张是腾讯 ...

  5. PDO操作大数据对象

    一般在数据库中,我们保存的都只是 int . varchar 类型的数据,一是因为现代的关系型数据库对于这些内容会有很多的优化,二是大部分的索引也无法施加在内容过多的字段上,比如说 text 类型的字 ...

  6. c#几种数据库的大数据批量插入(SqlServer、Oracle、SQLite和MySql)

    这篇文章主要介绍了c#几种数据库的大数据批量插入(SqlServer.Oracle.SQLite和MySql),需要的朋友可以了解一下. 在之前只知道SqlServer支持数据批量插入,殊不知道Ora ...

  7. java 导出Excel 大数据量,自己经验总结!

    出处: http://lyjilu.iteye.com/ 分析导出实现代码,XLSX支持: /** * 生成<span style="white-space: normal; back ...

  8. 23个适合Java开发者的大数据工具和框架

    转自:https://www.yidianzixun.com/article/0Ff4gqZQ?s=9&appid=yidian&ver=3.8.4&utk=6n9c2z37 ...

  9. Java编码规范之数据对象命名

    数据对象分多种,为方便阅读并区分各数据对象的用途,习惯将数据对象分为以下几类,供参考: 持久对象 PO(persistant object)对象关系映射(ORM)概念的产物,基本上对象的成员变量对应了 ...

随机推荐

  1. iOS开发-- 利用AVPlayer播放远程音乐和视频

    一.简单的播放音乐和视频,播放视频的工具栏需要自己写 二.利用老师封装的框架实现视频播放 链接:http://pan.baidu.com/s/1hrEKlus 密码:8e7g

  2. nginx配置实战1----配置虚拟主机

    1 nginx虚拟主机的概念 虚拟主机是在网络服务器上划分出一定的磁盘空间供用户放置站点.应用组件等,提供必要的站点功能.数据存放和传输功能,所谓虚拟主机,也叫"网站空间",就是把 ...

  3. 01python算法--算法和数据结构是什么鬼?

    我不想直接拷贝google 上面所有对算法的解释.所以我想怎么说就怎么说了,QAQ 1:什么是程序? 解决问题的范式 2:什么是问题? 程序输入与输出之间的联系 3:什么是算法: 算法就是解决问题的思 ...

  4. Js-字符串截取substring,分割split,指标indexOf,拼接John

    函数:split() 功能:使用一个指定的分隔符把一个字符串分割存储到数组例子: var theString=”jpg|bmp|gif|ico|png”; var arr=theString.spli ...

  5. js自定义正则表达式

    <script>var r, re; // 声明变量. var s = "The rain in Spain falls mainly in the plain."; ...

  6. Spark MLib 数据类型

    1.  MLlib Apache Spark's scalable machine learning library, with APIs in Java, Scala and Python. 2. ...

  7. Java并发和多线程(一)基础知识

    1.java线程状态 Java中的线程可以处于下列状态之一: NEW: 至今尚未启动的线程处于这种状态. RUNNABLE: 正在 Java 虚拟机中执行的线程处于这种状态. BLOCKED: 受阻塞 ...

  8. 【BZOJ-3238】差异 后缀数组 + 单调栈

    3238: [Ahoi2013]差异 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 1561  Solved: 734[Submit][Status] ...

  9. 自动完成--autoComplete插件

    js下载地址:https://github.com/devbridge/jQuery-Autocomplete 1.引入js,引入css --start------------------------ ...

  10. NAT功能的研究

    通俗的话:现在大部分的家用路由器都是这个功能,一个公网IP的拨号网络,然后地下全部电脑都可以用这个IP上网,进行数据转发,这就是NAT. 参考:http://baike.baidu.com/link? ...