一、大数据对象简介
大数据对象处理主要有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的驱动过低。