分两部分:数据库操作部分、存储读取部分
1、数据库操作部分
package study.dbo;
import java.sql.*;
import java.util.*;
public class JDaoBasic {
private Connection conn;
private Statement stmt=null;
public JDaoBasic() {
}
public JDaoBasic(Connection conn) {
this.conn = conn;
}
public void getConn()
{
try
{
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
String
url="jdbc:oracle:thin:@192.168.0.241:1521:nspgchn";
String
user="shysnew";
String
password="shysnew";
conn=
DriverManager.getConnection(url,user,password);
}
catch(Exception ex)
{
ex.printStackTrace();
} }
public boolean freeConn() {
try {
stmt.close();
if (conn !=
null && !conn.isClosed())
{
conn.close();
conn
= null;
}
} catch (SQLException e)
{
e.printStackTrace();
return
false;
}
return true;
}
public ResultSet getResultSet(String sql) throws
SQLException
{
ResultSet rs = null;
try
{
stmt =
conn.createStatement();
rs =
stmt.executeQuery(sql);
return
rs;
}
catch(Exception ex)
{
ex.printStackTrace();
}
return null;
}
public int update(String sql) throws
SQLException
{
try
{
stmt =
conn.createStatement();
return
stmt.executeUpdate(sql);
}
catch(Exception ex)
{
ex.printStackTrace();
}
return -1;
}
public void begin() throws SQLException
{
conn.setAutoCommit(false);
}
public void commit() throws SQLException
{
conn.commit();
conn.setAutoCommit(true);
}
public boolean rollback() {
try {
conn.rollback();
conn.setAutoCommit(true);
} catch (SQLException e)
{
e.printStackTrace();
return
false;
}
return true;
}
public static void main(String args[])
{
}
}
2、存储读取部分
package study.storepic;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.sql.ResultSet;
import oracle.jdbc.driver.OracleBlobInputStream;
import study.dbo.JDaoBasic;
public class StorePic {
public void StorePict()
{
String sql="";
ResultSet rs=null;
JDaoBasic jdb=new
JDaoBasic();
jdb.getConn();
try
{
jdb.begin();
//1、插入空的blob
sql="insert into aapic(id,pic) values (
'1',empty_blob())";
jdb.update(sql);
//2、更新记录
sql="select * from aapic where id=
'1' for update ";
rs=jdb.getResultSet(sql);
oracle.sql.BLOB blob=null;
while(rs.next())
{
blob = (oracle.sql.BLOB) rs.getBlob(
"pic"); // 得到BLOB对象
}
File file = new File(
"e:/DSC01232.jpg");// 得到file对象
if(file.exists()
&&
file.isFile())//如果文件存在,并且文件为file
{
OutputStream out = blob.getBinaryOutputStream(); // 建立输出流
InputStream in = new FileInputStream(file); // 建立输入流
int size = blob.getBufferSize();
byte[] buffer = new byte[size]; // 建立缓冲区
int len;
while ((len = in.read(buffer)) != -1) {
out.write(buffer, 0, len);
}
in.close();
out.close();
}
jdb.commit();
}
catch(Exception ex)
{
jdb.rollback();
ex.printStackTrace();
}
finally
{
try
{
jdb.freeConn();
}