处理大数据对象

一、大数据对象简介

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

猜你喜欢

转载自blog.csdn.net/above_my_point/article/details/78943722