参考:
package demo;import java.sql.*;
import java.io.*;
import oracle.sql.BLOB;
import oracle.jdbc.*;//此程序的作用:向test(字段为name varchar2;b blob)库,插入一个文件(read.txt),再将其从库中读出,写到ok.txt中public class orablob
{
public void orablob()
{}
public static void insertblob()
{
try
{
//首先是将文件输入到数据库。
Class.forName("oracle.jdbc.driver.OracleDriver");//注册数据库引擎。
Connection conn= DriverManager.getConnection("dburl=jdbc:oracle:thin:@yf:1521:kjb", "kjb", "KJBMostJ2EEOraDB");//建立连接串
conn.setAutoCommit(false);//关闭自动提交,以提高性能。
Statement stmt=conn.createStatement();//建立会话
try
{
stmt.execute ("drop table test");
}
catch (SQLException e)
{
// An exception could be raised here if the table did not exist already.
}
stmt.execute ("create table test (fname varchar2(600),bx blob)"); File file=new File("D:\\test\\Icon.jpg");
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 TEST VALUES (?,?)");
pstmt.setString(1,file.getName());
pstmt.setBinaryStream(2,(new ByteArrayInputStream(blobByte)), blobByte.length);
pstmt.executeUpdate();//将文件流插入到数据库中。
pstmt.close();//以下是从库中读取文件。
ResultSet rset=stmt.executeQuery("SELECT * from test");
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\\Ora.java");
FileOutputStream fileoutstream=new FileOutputStream(binaryFile);//创建文件输出流。
InputStream instream=blob.getBinaryStream();//建立输入流,并将字段comment的值以流的形式,放入instream变量。
instream.read(buffer,0,chunk);//将文件流存入变量buffer,以buffer为中转
fileoutstream.write(buffer,0,chunk);//将buffer写入文件输出流。
System.out.println("write ok!");
instream.close();//关闭流
fileoutstream.close();
}
rset.close();
stmt.close();
conn.close();
System.out.print("ok");
}
catch(Exception ee)
{
System.out.println(ee.getMessage());
}
}
public static void main(String args[])
{
insertblob();
}}
package demo;import java.sql.*;
import java.io.*;
import oracle.sql.BLOB;
import oracle.jdbc.*;//此程序的作用:向test(字段为name varchar2;b blob)库,插入一个文件(read.txt),再将其从库中读出,写到ok.txt中public class orablob
{
public void orablob()
{}
public static void insertblob()
{
try
{
//首先是将文件输入到数据库。
Class.forName("oracle.jdbc.driver.OracleDriver");//注册数据库引擎。
Connection conn= DriverManager.getConnection("dburl=jdbc:oracle:thin:@yf:1521:kjb", "kjb", "KJBMostJ2EEOraDB");//建立连接串
conn.setAutoCommit(false);//关闭自动提交,以提高性能。
Statement stmt=conn.createStatement();//建立会话
try
{
stmt.execute ("drop table test");
}
catch (SQLException e)
{
// An exception could be raised here if the table did not exist already.
}
stmt.execute ("create table test (fname varchar2(600),bx blob)"); File file=new File("D:\\test\\Icon.jpg");
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 TEST VALUES (?,?)");
pstmt.setString(1,file.getName());
pstmt.setBinaryStream(2,(new ByteArrayInputStream(blobByte)), blobByte.length);
pstmt.executeUpdate();//将文件流插入到数据库中。
pstmt.close();//以下是从库中读取文件。
ResultSet rset=stmt.executeQuery("SELECT * from test");
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\\Ora.java");
FileOutputStream fileoutstream=new FileOutputStream(binaryFile);//创建文件输出流。
InputStream instream=blob.getBinaryStream();//建立输入流,并将字段comment的值以流的形式,放入instream变量。
instream.read(buffer,0,chunk);//将文件流存入变量buffer,以buffer为中转
fileoutstream.write(buffer,0,chunk);//将buffer写入文件输出流。
System.out.println("write ok!");
instream.close();//关闭流
fileoutstream.close();
}
rset.close();
stmt.close();
conn.close();
System.out.print("ok");
}
catch(Exception ee)
{
System.out.println(ee.getMessage());
}
}
public static void main(String args[])
{
insertblob();
}}
解决方案 »
- 全库查询如何实现,求思路或者实现方法!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- 遇到了IllegalArgumentException错误,但是没提示argument type mismatch~~~在线等~
- jsp页面问题
- 我用JSP想实现分页功能,但一直出错,哪位高手帮忙一下
- 急急急~~resin2.1启动时错误can't create socket;换成tomcat则:Unrecogized sockets error:10106:create
- 怎样在jsp中select下拉框选择的参数传递给本页面
- 如何用servlet filter实现加密解密?
- [SQL Server]在关键字 'null' 附近有语法错误!?
- 如何在WIN2000下配置Tomcat4?希望能尽量详细!
- 求JSP中文电子版!!!
- 如何配置tomcat 4.0
- 中文如何加到数据库中
中的BLOB是什么类型?
http://www.jspserver.com/injjni
这是我做的一个网页里面的图片从数据库中读出就是用jspsmartupload实现的!
详细内容在:
http://www.jspserver.com:8080/cgi-bin/jspbbs/leoboard.cgi
中的JavaBean应用