如题。
代码如下:
package demo;
import java.sql.*;
import java.io.*;
import oracle.sql.BLOB;
import oracle.jdbc.*;
import com.database.DbDAO;
public class Orablob extends DbDAO{
private static Orablob inform;
public static synchronized Orablob getInstance()
{
if (inform == null)
inform = new Orablob();
return inform;
}
public void insertblob()
{
try
{
//首先是将文件输入到数据库。
Class.forName( "oracle.jdbc.driver.OracleDriver ");//注册数据库引擎。
Connection conn= DriverManager.getConnection( "dburl=jdbc:oracle:thin:@10.1.92.100:1521:oradb ", "DEW ", "MARBLE ");//建立连接串
conn.setAutoCommit(false);//关闭自动提交,以提高性能。
Statement stmt=conn.createStatement();//建立会话
File file=new File( "D:\\laod-balancing.doc ");
InputStream is=new FileInputStream(file);//创建输入流,将外部文件输入到InputStream 中。
System.out.print(file.length());
byte[] blobByte=new byte[is.available()];
is.read(blobByte);
is.close();
PreparedStatement pstmt=conn.prepareStatement( "INSERT INTO DEW.T_FILE VALUES (?,?) ");
pstmt.setString(1, "1230110 ");
pstmt.setBinaryStream(2,(new ByteArrayInputStream(blobByte)), blobByte.length);
pstmt.executeUpdate();//将文件流插入到数据库中。
System.out.print( "测试 "); //执行到这里就不行了;
pstmt.close();
System.out.print( "以下是从库中读取文件。 ");
ResultSet rset=stmt.executeQuery( "SELECT * from DEW.T_FILE ");
while (rset.next())
{// Get LOB locators into Java wrapper classes.
BLOB blob=((OracleResultSet)rset).getBLOB(2);//获取文件字段。
// int chunk=blob.getChunkSize();
int chunk=blob.getChunkSize();
byte [] buffer=new byte[chunk];
System.out.println(chunk);
File binaryFile=new File( "D:\\test.doc ");
FileOutputStream fileoutstream=new FileOutputStream(binaryFile);//创建文件输出流。
InputStream instream=blob.getBinaryStream();//建立输入流,并将字段comment的值以流的形式,放入instream变量。