给人帮忙,写了一个JAVA读取Oracle数据库BLOB字段的示例代码。

仅作备忘。

示例说明:

1. 使用Oracle的JDBC驱动。

2. BLOB字段中存储的是一个文件,把BLOB字段中存储的内容保存到磁盘中形成文件。

程序代码片断如下:

---------------------

package DBtest;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.Statement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Blob;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.InputStream;

import java.io.OutputStream;

public class getDataFrmDB {

public getDataFrmDB() {

}

public static void main(String args[]) {

getDataFrmDB test = new getDataFrmDB();

if (test.getDate()) {

System.out.print("操作成功!");

}

else {

System.out.print("操作异常!");

}

}

public boolean getDate() {

Connection conn = null;

Statement sql = null;

ResultSet rs = null;

try {

try {

//Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

//String sourceURL = "jdbc:odbc:ORDB";

Class.forName("oracle.jdbc.driver.OracleDriver");

String sourceURL = "jdbc:oracle:thin:@127.0.0.1:1521:ORDB";

String user = "thamsdt";

String password = "thamsdt";

conn = DriverManager.getConnection(sourceURL, user, password);

sql = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,

ResultSet.CONCUR_UPDATABLE);

//注:“ini”字段为BLOB字段

String sqlstr = "Select username,ini from S_USER where usercode='ROOT'";

rs = sql.executeQuery(sqlstr);

while (rs.next()) {

String name = rs.getString("username");

//如下使用JdbcOdbcDriver则报错:Hit uncaught exception java.lang.UnsupportedOperationException

//java.sql.Blob blob = rs.getBlob("ini");

//注意这里的写法:使用的是OracleDriver

oracle.sql.BLOB blob = (oracle.sql.BLOB) rs.getBlob("ini");

String filepath = "C:/" + name + ".ini";

System.out.println("输出文件路径为:" + filepath);

try {

InputStream in = blob.getBinaryStream(); // 建立输出流

FileOutputStream file = new FileOutputStream(filepath);

int len = (int) blob.length();

byte[] buffer = new byte[len]; // 建立缓冲区

while ( (len = in.read(buffer)) != -1) {

file.write(buffer, 0, len);

}

file.close();

in.close();

}

catch (Exception e) {

System.out.println("I/O Exception.");

return false;

}

}

}

finally {

rs.close();

sql.close();

conn.close();

}

}

catch (SQLException e) {

System.out.println("SQLException.");

return false;

}

catch (ClassNotFoundException e) {

System.out.println("ClassNotFoundException.");

return false;

}

return true;

}

}

---------------------

By  JRQ

2008/04/15  · 京

Logo

一站式 AI 云服务平台

更多推荐