当前位置: 技术问答>java相关
如何从数据库中读出图片?
来源: 互联网 发布时间:2015-08-26
本文导语: resin+sql server2000,请给出源代码。 | 用jspsmartupload吧!现成的文件上传下载javabean类文件! http://www.jspserver.com/injjni 这是我做的一个网页里面的图片从数据库中读出就是用jspsmartupload实现的! ...
resin+sql server2000,请给出源代码。
|
用jspsmartupload吧!现成的文件上传下载javabean类文件!
http://www.jspserver.com/injjni
这是我做的一个网页里面的图片从数据库中读出就是用jspsmartupload实现的!
详细内容在:
http://www.jspserver.com:8080/cgi-bin/jspbbs/leoboard.cgi
中的JavaBean应用
http://www.jspserver.com/injjni
这是我做的一个网页里面的图片从数据库中读出就是用jspsmartupload实现的!
详细内容在:
http://www.jspserver.com:8080/cgi-bin/jspbbs/leoboard.cgi
中的JavaBean应用
|
参考:
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();
}
}