数据库的clob和blob操作

本文通过三个示例介绍了如何使用Java操作数据库中的CLOB和BLOB数据类型,包括插入文本文件到CLOB字段及从数据库中读取CLOB内容,以及如何将图片保存到BLOB字段并从数据库中读取出来。

     在数据库的操作过程中,clob主要用于处理大数据功能,如:一些文本等等;而blob主要用于保存二进制信息:如,图片,音乐,电影等。当然,对于以上操作也可以用IO操作,不过用clob和blob更方便一些!
     下面是我从mldn上看到的一些例子:
================ clob
1.package clobDemo;
import java.sql.Connection ;
import java.sql.DriverManager ;
import java.sql.PreparedStatement ;
import java.io.File ;
import java.io.FileInputStream ;
import java.io.InputStream ;
public class ClobDemo01{
 // 定义MySQL的数据库驱动程序
 public static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;
 // 定义MySQL数据库的连接地址
 public static final String DBURL = "jdbc:mysql://localhost:3306/mldn" ;
 // MySQL数据库的连接用户名
 public static final String DBUSER = "root" ;
 // MySQL数据库的连接密码
 public static final String DBPASS = "mysqladmin" ;
 public static void main(String args[]) throws Exception{ // 所有异常抛出
  Connection conn = null ;  // 数据库连接
  PreparedStatement pstmt = null ;
  String name = "海风" ; // 表示姓名
  String sql = "INSERT INTO userclob(name,note) VALUES (?,?) " ;
  Class.forName(DBDRIVER) ; // 加载驱动程序
  conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ;
  pstmt = conn.prepareStatement(sql) ; // 创建PreapredStatement对象
  File f = new File("d:" + File.separator + "mldn.txt") ;
  InputStream input = null ;
  input = new FileInputStream(f) ; // 通过输入流读取文件
  pstmt.setString(1,name) ;
  pstmt.setAsciiStream(2,input,(int)f.length()) ;//将文本导入
  pstmt.executeUpdate() ;
  conn.close() ;   // 数据库关闭
 }
};
2.package clobDemo;
import java.sql.Connection ;
import java.sql.DriverManager ;
import java.sql.SQLException ;
import java.sql.PreparedStatement ;
import java.sql.ResultSet ;
import java.io.File ;
import java.io.FileInputStream ;
import java.io.InputStream ;
import java.util.Scanner ;
public class ClobDemo02{
 // 定义MySQL的数据库驱动程序
 public static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;
 // 定义MySQL数据库的连接地址
 public static final String DBURL = "jdbc:mysql://localhost:3306/mldn" ;
 // MySQL数据库的连接用户名
 public static final String DBUSER = "root" ;
 // MySQL数据库的连接密码
 public static final String DBPASS = "mysqladmin" ;
 public static void main(String args[]) throws Exception{ // 所有异常抛出
  Connection conn = null ;  // 数据库连接
  PreparedStatement pstmt = null ;
  ResultSet rs = null ;
  int id = 1 ;  // 读取的编号
  
  String sql = "SELECT name,note FROM userclob WHERE id=? " ;
  Class.forName(DBDRIVER) ; // 加载驱动程序
  conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ;
  pstmt = conn.prepareStatement(sql) ; // 创建PreapredStatement对象
  pstmt.setInt(1,id) ;
  rs = pstmt.executeQuery() ;
  if(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) ; // 使用Scanner类读取内容
   scan.useDelimiter("\r\n") ; // 将文件换行作为分割符
   while(scan.hasNext()){
    note.append(scan.next()).append("\n") ;
   }
   System.out.println("内容:" + note) ;
   input.close() ;
  }
  rs.close() ;
  pstmt.close() ;
  conn.close() ;   // 数据库关闭
 }
};
  
3.package clobDemo;
import java.sql.Connection ;
import java.sql.DriverManager ;
import java.sql.SQLException ;
import java.sql.PreparedStatement ;
import java.sql.Clob ;
import java.sql.ResultSet ;
public class ClobDemo03{
 // 定义MySQL的数据库驱动程序
 public static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;
 // 定义MySQL数据库的连接地址
 public static final String DBURL = "jdbc:mysql://localhost:3306/mldn" ;
 // MySQL数据库的连接用户名
 public static final String DBUSER = "root" ;
 // MySQL数据库的连接密码
 public static final String DBPASS = "mysqladmin" ;
 public static void main(String args[]) throws Exception{ // 所有异常抛出
  Connection conn = null ;  // 数据库连接
  PreparedStatement pstmt = null ;
  ResultSet rs = null ;
  int id = 1 ;  // 读取的编号
  
  String sql = "SELECT name,note FROM userclob WHERE id=? " ;
  Class.forName(DBDRIVER) ; // 加载驱动程序
  conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ;
  pstmt = conn.prepareStatement(sql) ; // 创建PreapredStatement对象
  pstmt.setInt(1,id) ;
  rs = pstmt.executeQuery() ;
  if(rs.next()){
   String name = rs.getString(1) ;
   System.out.println("姓名:" + name) ;
   Clob c = rs.getClob(2) ;
   String note = c.getSubString(1,(int)c.length()) ;
   System.out.println("内容:" + note ) ;
   c.truncate(100) ; // 只能读100个内容
   System.out.println("部分读取内容:" + c.getSubString(1,(int)c.length())) ;
  }
  rs.close() ;
  pstmt.close() ;
  conn.close() ;   // 数据库关闭
 }
};  
==================================blob
1.package blobDemo;
import java.sql.Connection ;
import java.sql.DriverManager ;
import java.sql.SQLException ;
import java.sql.PreparedStatement ;
import java.io.File ;
import java.io.FileInputStream ;
import java.io.InputStream ;
public class BlobDemo01{
 // 定义MySQL的数据库驱动程序
 public static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;
 // 定义MySQL数据库的连接地址
 public static final String DBURL = "jdbc:mysql://localhost:3306/mldn" ;
 // MySQL数据库的连接用户名
 public static final String DBUSER = "root" ;
 // MySQL数据库的连接密码
 public static final String DBPASS = "mysqladmin" ;
 public static void main(String args[]) throws Exception{ // 所有异常抛出
  Connection conn = null ;  // 数据库连接
  PreparedStatement pstmt = null ;
  String name = "李兴华" ;
  String sql = "INSERT INTO userblob(name,photo) VALUES (?,?) " ;
  Class.forName(DBDRIVER) ; // 加载驱动程序
  conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ;
  pstmt = conn.prepareStatement(sql) ;
  File f = new File("d:" + File.separator + "mldn.gif") ; // 图片文件
  InputStream input = null ;
  input = new FileInputStream(f) ;
  pstmt.setString(1,name) ; // 设置第一个“?”的内容
  pstmt.setBinaryStream(2,input,(int)f.length()) ; // 设置输入流
  pstmt.executeUpdate() ; // 更新数据库
  pstmt.close() ;
  conn.close() ;   // 数据库关闭
 }
};
2.package blobDemo;
import java.sql.Connection ;
import java.sql.DriverManager ;
import java.sql.SQLException ;
import java.sql.PreparedStatement ;
import java.io.File ;
import java.io.FileOutputStream ;
import java.sql.ResultSet ;
import java.io.InputStream ;
import java.io.InputStream ;
import java.io.OutputStream ;
public class BlobDemo02{
 // 定义MySQL的数据库驱动程序
 public static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;
 // 定义MySQL数据库的连接地址
 public static final String DBURL = "jdbc:mysql://localhost:3306/mldn" ;
 // MySQL数据库的连接用户名
 public static final String DBUSER = "root" ;
 // MySQL数据库的连接密码
 public static final String DBPASS = "mysqladmin" ;
 public static void main(String args[]) throws Exception{ // 所有异常抛出
  Connection conn = null ;  // 数据库连接
  PreparedStatement pstmt = null ;
  ResultSet rs = null ;
  int id = 1 ;
  String sql = "SELECT name,photo FROM userblob WHERE id=?" ;
  Class.forName(DBDRIVER) ; // 加载驱动程序
  conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ;
  pstmt = conn.prepareStatement(sql) ;
  pstmt.setInt(1,id) ;
  rs = pstmt.executeQuery() ; // 执行查询
  if(rs.next()){
   String name = rs.getString(1) ;
   System.out.println("姓名:" + name) ;
   InputStream input = rs.getBinaryStream(2) ;
   File f = new File("d:" + File.separator + "loadmldn.gif") ; // 图片文件
   OutputStream out = null ;
   out = new FileOutputStream(f) ;
   int temp = 0 ;
   while((temp=input.read())!=-1){ // 边读边写
    out.write(temp) ;
   }
   input.close() ;
   out.close() ;
  }
  pstmt.close() ;
  conn.close() ;   // 数据库关闭
 }
};
3.package blobDemo;
import java.sql.Connection ;
import java.sql.DriverManager ;
import java.sql.PreparedStatement ;
import java.sql.Blob ;
import java.sql.ResultSet ;
import java.io.File ;
import java.io.FileOutputStream ;
import java.io.OutputStream ;
public class BlobDemo03{
 // 定义MySQL的数据库驱动程序
 public static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;
 // 定义MySQL数据库的连接地址
 public static final String DBURL = "jdbc:mysql://localhost:3306/mldn" ;
 // MySQL数据库的连接用户名
 public static final String DBUSER = "root" ;
 // MySQL数据库的连接密码
 public static final String DBPASS = "mysqladmin" ;
 public static void main(String args[]) throws Exception{ // 所有异常抛出
  Connection conn = null ;  // 数据库连接
  PreparedStatement pstmt = null ;
  ResultSet rs = null ;
  int id = 1 ;
  String sql = "SELECT name,photo FROM userblob WHERE id=?" ;
  Class.forName(DBDRIVER) ; // 加载驱动程序
  conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ;
  pstmt = conn.prepareStatement(sql) ;
  pstmt.setInt(1,id) ;
  rs = pstmt.executeQuery() ; // 执行查询
  if(rs.next()){
   String name = rs.getString(1) ;
   System.out.println("姓名:" + name) ;
   Blob b = rs.getBlob(2) ;
   File f = new File("d:" + File.separator + "loadmldn.gif") ; // 图片文件
   OutputStream out = null ;
   out = new FileOutputStream(f) ;
   out.write(b.getBytes(1,(int)b.length())) ;
   out.close() ;
  }
  pstmt.close() ;
  conn.close() ;   // 数据库关闭
 }
};
通过例子我们可以看出哪个更方便一些!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值