一、大数据对象简介
大数据对象处理主要有CLOB(character large object)和BLOG(binary large object)两种类型的字段:
1、在CLOB中 可以储存大字符数据对象,比如长篇小说。
2、在BLOG中可以存放二进制大数据对象,比如图片,电影,音乐。
二、CLOB使用
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.sql.Clob;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import model.Book;
import util.DbUtil;
public class demo3 {
/**
* 增加图书
* @param book
* @throws Exception
*/
private static void addBook(Book book) throws Exception{
DbUtil dbUtil = new DbUtil();
Connection con = dbUtil.getcon();
String sql = "insert into t_book values(null,?,?,?,?)";
PreparedStatement psta = con.prepareStatement(sql);
psta.setString(1, book.getBookName());
psta.setString(2, book.getAuthor());
psta.setFloat(3, book.getPrice());
File context = book.getContext();
InputStream inputStream=new FileInputStream(context);
psta.setAsciiStream(4, inputStream, context.length());
int result = psta.executeUpdate();
if(result == 1){
System.out.println("插入成功");
}else{
System.out.println("插入失败");
}
dbUtil.close(psta, con);
}
/**
* getString
* @param id
* @throws Exception
*/
public static void getBook(int id)throws Exception{
DbUtil dbUtil = new DbUtil();
Connection con=dbUtil.getcon();
String sql="select * from t_book where id=?";
PreparedStatement pstmt=con.prepareStatement(sql);
pstmt.setInt(1, id);
ResultSet rs=pstmt.executeQuery();
if(rs.next()){
String bookName=rs.getString("bookName");
String author=rs.getString("author");
float price=rs.getFloat("price");
Clob c=rs.getClob("context");
String context=c.getSubString(1, (int)c.length());
System.out.println("图书名称:"+bookName);
System.out.println("图书作者:"+author);
System.out.println("图书价格:"+price);
System.out.println("图书内容:"+context);
}
dbUtil.close(pstmt, con);//关闭数据连接
}
public static void main(String[] args) throws Exception {
/*File context=new File("D:/helloWorld.txt");
Book book=new Book("helloWorld","张三",100,context);
addBook(book);*/
getBook(1);
}
}
三、BLOB使用
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.sql.Blob;
import java.sql.Clob;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import model.Book;
import util.DbUtil;
public class demo3 {
/**
* 增加图书
* @param book
* @throws Exception
*/
private static void addBook(Book book) throws Exception{
DbUtil dbUtil = new DbUtil();
Connection con = dbUtil.getcon();
String sql = "insert into t_book values(null,?,?,?,?,?)";
PreparedStatement psta = con.prepareStatement(sql);
psta.setString(1, book.getBookName());
psta.setString(2, book.getAuthor());
psta.setFloat(3, book.getPrice());
File context = book.getContext();
InputStream inputStream=new FileInputStream(context);
psta.setAsciiStream(4, inputStream, context.length());
File pic = book.getPic();
InputStream inputStream2 = new FileInputStream(pic);
psta.setBinaryStream(5, inputStream2, pic.length());
int result = psta.executeUpdate();
if(result == 1){
System.out.println("插入成功");
}else{
System.out.println("插入失败");
}
dbUtil.close(psta, con);
}
/**
* getString
* @param id
* @throws Exception
*/
public static void getBook(int id)throws Exception{
DbUtil dbUtil = new DbUtil();
Connection con=dbUtil.getcon();
String sql="select * from t_book where id=?";
PreparedStatement pstmt=con.prepareStatement(sql);
pstmt.setInt(1, id);
ResultSet rs=pstmt.executeQuery();
if(rs.next()){
String bookName=rs.getString("bookName");
String author=rs.getString("author");
float price=rs.getFloat("price");
Clob c=rs.getClob("context");
String context=c.getSubString(1, (int)c.length());
Blob b = rs.getBlob("pic");
FileOutputStream out=new FileOutputStream(new File("d:/pic2.jpg"));
out.write(b.getBytes(1, (int)b.length()));
out.close();
System.out.println("图书名称:"+bookName);
System.out.println("图书作者:"+author);
System.out.println("图书价格:"+price);
System.out.println("图书内容:"+context);
}
dbUtil.close(pstmt, con);//关闭数据连接
}
public static void main(String[] args) throws Exception {
/*File context=new File("D:/helloWorld.txt");
File pic = new File("D:/123.jpg");
Book book=new Book("helloWorld","张三",100,context,pic);
addBook(book);*/
getBook(2);
}
}
四、异常
java.lang.AbstractMethodError: com.mysql.jdbc.PreparedStatement.setBlob(ILjava/io/InputStream;)V
出现这个说明JDBC的驱动过低。