⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lobexample2.java

📁 Connection Oracle9i database Read and Wrote Lob ,long or long raw type and save to file
💻 JAVA
字号:
import java.sql.*;
import java.io.*;
import oracle.sql.*;
import oracle.jdbc.*;

/**
 * @author Sean
 * @version 1.0
 * @date 2005/8/24
 */
public class LobExample2 {
	public static void readCLOB(Statement stmt,String fileName,
	                            String sourceDirectory,String targetDirectory) 
	                            throws SQLException,IOException {
  //step 1 : 将包含LOB定位器的行读入结果集
  ResultSet rs = stmt.executeQuery("select clob_column from clob_content ");
  
  //step 2 : 在JAVA程序中创建一个LOB对象,并且将LOB定位器从结果集读入这个LOB对象。
  rs.next();
  oracle.sql.CLOB myClob = ((OracleResultSet)rs).getCLOB(1);
  
  //ste[ 3 : 从LOB对象获取LOB的组块大小
  int chunkSize = myClob.getChunkSize();
  
  //step 4 : 创建一个缓冲区来存储自LOB对象的数据组块
  char[] charBuffer = new char[chunkSize];
  
  //step 5 : 创建一个文件对象
  String saveFile = targetDirectory +"retrievedCLOB"+ fileName;
  File myFile = new File(saveFile);
  
  //step 6 : 创建输出流对象以便将LOB内容写到新文件
  OutputStreamWriter myOutputStreamWriter = new OutputStreamWriter (
                                                new FileOutputStream (myFile));
  BufferedWriter myBufferedWriter = new BufferedWriter(myOutputStreamWriter);
 
  //step 7 : 从LOB对象获取LOB内容的长度
  long clobLength = myClob.length();
  
  //step 8 : 将数据组块从LOB对象读入到第四步中创建的缓冲区。将缓冲区的内容写到新文件
  for(long position = 1 ; position<=clobLength;position += chunkSize) {
  	int charRead = myClob.getChars(position,chunkSize,charBuffer);
  	myBufferedWriter.write(charBuffer);
  } // end of for
  
  //step 9 : 关闭流对象
  myBufferedWriter.close();
  myOutputStreamWriter.close();
  
  System.out.println("Read CLOB and saved file " + saveFile);
  } // end of readCLOB 
  
  public static void readBLOB(Statement stmt,String fileName,
                              String sourceDirectory,String targetDirectory) 
                              throws SQLException,IOException {
    ResultSet rs = stmt.executeQuery("select blob_column from blob_content ");
    rs.next();
    oracle.sql.BLOB myBlob = ((OracleResultSet)rs).getBLOB(1);
    int chunkSize = myBlob.getChunkSize();
    long blobLength = myBlob.length();
    byte[] bytesBuffer = new byte[chunkSize];
    String saveFile = targetDirectory + "readBLOB"+fileName;
    FileOutputStream myFileOutputStream = new FileOutputStream (
                                              new File(saveFile));
    for (long position = 1 ; position <= blobLength ; position += chunkSize) {
    	int byteRead = myBlob.getBytes(position,chunkSize,bytesBuffer);
    	myFileOutputStream.write(bytesBuffer);
    } // end of for
    
    myFileOutputStream.close();
    System.out.println("Read BLOB and saved file "+saveFile);
  } // end of readBLOB
  
  public static void retrievedBFILE(Statement stmt,String fileName,
                                    String targetDirectory)
                                    throws SQLException,IOException {
                                    	
    ResultSet rs = stmt.executeQuery("select bfile_column from bfile_content ");
    rs.next();
    
    oracle.sql.BFILE myBfile = ((OracleResultSet)rs).getBFILE(1);
    
    String bfileName = myBfile.getName();
    
    myBfile.fileExists();
    
    myBfile.openFile();
    
    InputStream myInputStream = myBfile.getBinaryStream();
    
    String saveFile = targetDirectory + "retrievedBFILE"+bfileName;
    saveFile(myInputStream,saveFile);
    
    myInputStream.close();
    myBfile.closeFile();
    
    System.out.println("Read BFILE and save file "+saveFile);
  } // end of retrievedBFILE
  
  public static void saveFile(InputStream myInputStream,String fileName) throws IOException {
  	FileOutputStream myFileOutputStream = new FileOutputStream (
  	                                          new File (fileName));
  	byte[]  byteBuffer = new byte[8132];
  	int byteRead;
  	while((byteRead = myInputStream.read(byteBuffer)) != -1 ) {
  		myFileOutputStream.write(byteBuffer);
  	} //end of while
  	myFileOutputStream.close();
  } // end of saveFile
 
  public static void main(String[] args) throws SQLException,IOException {
  	DriverManager.registerDriver(new OracleDriver());
  	Connection conn = DriverManager.getConnection("jdbc:oracle:thin:swatt/swgood@10.10.10.251:1521:test");
  	conn.setAutoCommit(false);
  	Statement stmt = conn.createStatement();
  	String sourceDirectory = "D:\\JSPBook\\JDBC\\JDBC_book\\sample_files\\";
  	String targetDirectory = "D:\\JSPBook\\JDBC\\JDBC_book\\sample_files\\retrieved\\";
  	readCLOB(stmt,"textContent.txt",sourceDirectory,targetDirectory);
  	readBLOB(stmt,"binaryContent.doc",sourceDirectory,targetDirectory);
  	retrievedBFILE(stmt,"textContent.txt",targetDirectory);
  	
  	stmt.close();
  	conn.close();
  } // end of main

}//end of LobExample2
  	   

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -