java+oracle问题
在java里如何访问放在oracle里的图片文件或者是大对象,,请高手帮帮忙 问题点数:40、回复次数:8Top
1 楼davidmay(我最喜欢你们这些灌水的了,真有技术含量)回复于 2005-04-20 13:09:25 得分 10
以二进制访问。可用byte数组来接收数据。Top
2 楼itjourney(IT之旅)回复于 2005-04-20 13:20:28 得分 10
java.sql.ResultSet
getBlob()
getBytes()
getClob()
Top
3 楼samkuang(执着前行)回复于 2005-04-20 19:12:55 得分 0
itjourney(IT之旅) 可以详细点吗,有例子最好,无限感激!!Top
4 楼lasthope(学生)回复于 2005-04-20 21:12:11 得分 0
关注Top
5 楼samkuang(执着前行)回复于 2005-04-21 21:33:58 得分 0
upupTop
6 楼ike_Adriano(亚热带空气)回复于 2005-04-21 22:03:13 得分 0
帮你UP一下Top
7 楼samkuang(执着前行)回复于 2005-04-23 23:46:26 得分 0
upupupTop
8 楼Squall1009(钰枫)(找工作ing)回复于 2005-04-24 00:31:43 得分 20
import java.io.*;
import java.sql.*;
public class BlobOperation
{
public static void addLob(long id, String binFile) throws SQLException
{
Connection con = null;
PreparedStatement ps = null;
ResultSet rs = null;
try
{
con = ConnectionFactory.getConnection(); //换成你自己取连接的方法
con.setAutoCommit(false);
String sql = "INSERT INTO Blob_Tbl(id, binfile, bincontent)";
sql += " VALUES(?, ?, ?)";
ps = con.prepareStatement(sql);
ps.setLong(1, id);
ps.setString(2, binFile);
ps.setBlob(3, oracle.sql.BLOB.empty_lob());
ps.executeUpdate();
//DatabaseUtils.closeObject(ps);
ps = con.prepareStatement("SELECT bincontent FROM Blob_Tbl WHERE id = " + id + " for update ");
rs = ps.executeQuery();
if (rs.next())
{
oracle.sql.BLOB binContent = (oracle.sql.BLOB) rs.getBlob(1);
/* write blob content */
OutputStream binOut = binContent.getBinaryOutputStream();
BufferedOutputStream out = new BufferedOutputStream(binOut);
BufferedInputStream in = new BufferedInputStream(new FileInputStream(binFile));
int c;
while ((c = in.read()) != -1)
{
out.write(c);
}
in.close();
out.close();
}
con.commit();
} catch (Exception e)
{
e.printStackTrace();
try
{
con.rollback();
} catch (SQLException se)
{
}
throw new SQLException(e.getMessage());
} finally
{
DatabaseUtils.closeObject(rs, ps, con);
}
}
public static void fetchLob(long id, String filename) throws SQLException
{
Connection con = null;
Statement st = null;
ResultSet rs = null;
try
{
con = ConnectionFactory.getConnection();
String sql = "SELECT * From Blob_Tbl Where id = " + id;
st = con.createStatement();
rs = st.executeQuery(sql);
while (rs.next())
{
String binFile = rs.getString("binfile");
oracle.sql.BLOB binContent = (oracle.sql.BLOB) rs.getBlob("bincontent");
/* read blob content */
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(filename));
BufferedInputStream in = new BufferedInputStream(binContent.getBinaryStream());
int c;
while ((c = in.read()) != -1)
{
out.write(c);
}
in.close();
out.close();
}
} catch (Exception e)
{
throw new SQLException(e.getMessage());
} finally
{
DatabaseUtils.closeObject(rs, st, con);
}
}
public static void main(String[] args) throws Exception
{
if (args.length == 0)
{
addLob(1, "a.jpg");
} else
{
fetchLob(1, args[0]);
}
}
}
自己把有的东西改下吧Top




