关于java和oracle的问题
如何用java给oracle存入图片,给出例子,确实有帮助的,追加分数后采纳做过的帮帮我....别从网上粘.....灰机哥,你给的例子报告:java.io.FileNot...
如何用java给oracle存入图片,给出例子,确实有帮助的,追加分数后采纳
做过的帮帮我....别从网上粘.....
灰机哥,你给的例子报告:java.io.FileNotFoundException: D:\javaTest (拒绝访问。) 展开
做过的帮帮我....别从网上粘.....
灰机哥,你给的例子报告:java.io.FileNotFoundException: D:\javaTest (拒绝访问。) 展开
9个回答
展开全部
D:\javaTest 这个路径有问题,在流中路径是"\javaTest.java"存图片的话是用blob类型,具体例子现在在上班,没法给。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
package test_img;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class ImgTest {
private static String driverName = "oracle.jdbc.driver.OracleDriver";
private static String url = "jdbc:oracle:thin:@localhost:1521:ORCL";
private static String userName = "scott";
private static String password = "tiger";
private static String imgPath = "src//img//11.gif";
static {
try {
Class.forName(driverName);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
Connection conn = null;
PreparedStatement ps = null;
InputStream is = null;
ResultSet rs = null;
try {
/* 先插入一个空的blob对象 */
String sql = "insert into img_test values(1,EMPTY_BLOB())";
is = new FileInputStream(imgPath);
conn = DriverManager.getConnection(url,userName,password);
conn.setAutoCommit(false);
ps = conn.prepareStatement(sql);
ps.executeUpdate(); //执行过后不提交
/* 根据ID查询相关记录,主要是对空的blob对象填充 */
rs = ps.executeQuery("select img from img_test a where a.id = 1 for update");
while (rs.next()){
/*记住这里用oracle的Blob*/
oracle.sql.BLOB blob = (oracle.sql.BLOB)rs.getBlob("img");
BufferedOutputStream out = new BufferedOutputStream(blob.getBinaryOutputStream());
BufferedInputStream in = new BufferedInputStream(new FileInputStream(imgPath));
int c;
while ((c=in.read())!=-1) {
out.write(c);
}
in.close();
out.close();
}
conn.commit();
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
rs.close();
ps.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
SQL> create table img_test(id number(2),img blob);
Table created
SQL> select * from img_test; --执行程序之前的
SQL> select * from img_test; --执行程序之后的
ID IMG
--- ---
1 <BL
SQL>
好了,我帮你写好了,思路就是这样,而且验证了。。。
LZ,如果你验证好了,请记得加分。。。。
PS:
D:\\img\\22.gif 这样写。。。双斜杠
结果:
SQL> select * from img_test;
ID IMG
--- ---
1 <BL
2 <BL
再不行,把你代码贴出来吧。。。
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class ImgTest {
private static String driverName = "oracle.jdbc.driver.OracleDriver";
private static String url = "jdbc:oracle:thin:@localhost:1521:ORCL";
private static String userName = "scott";
private static String password = "tiger";
private static String imgPath = "src//img//11.gif";
static {
try {
Class.forName(driverName);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
Connection conn = null;
PreparedStatement ps = null;
InputStream is = null;
ResultSet rs = null;
try {
/* 先插入一个空的blob对象 */
String sql = "insert into img_test values(1,EMPTY_BLOB())";
is = new FileInputStream(imgPath);
conn = DriverManager.getConnection(url,userName,password);
conn.setAutoCommit(false);
ps = conn.prepareStatement(sql);
ps.executeUpdate(); //执行过后不提交
/* 根据ID查询相关记录,主要是对空的blob对象填充 */
rs = ps.executeQuery("select img from img_test a where a.id = 1 for update");
while (rs.next()){
/*记住这里用oracle的Blob*/
oracle.sql.BLOB blob = (oracle.sql.BLOB)rs.getBlob("img");
BufferedOutputStream out = new BufferedOutputStream(blob.getBinaryOutputStream());
BufferedInputStream in = new BufferedInputStream(new FileInputStream(imgPath));
int c;
while ((c=in.read())!=-1) {
out.write(c);
}
in.close();
out.close();
}
conn.commit();
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
rs.close();
ps.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
SQL> create table img_test(id number(2),img blob);
Table created
SQL> select * from img_test; --执行程序之前的
SQL> select * from img_test; --执行程序之后的
ID IMG
--- ---
1 <BL
SQL>
好了,我帮你写好了,思路就是这样,而且验证了。。。
LZ,如果你验证好了,请记得加分。。。。
PS:
D:\\img\\22.gif 这样写。。。双斜杠
结果:
SQL> select * from img_test;
ID IMG
--- ---
1 <BL
2 <BL
再不行,把你代码贴出来吧。。。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你用ORACLE存图片地址,然后在JAVA/JSP中再取出此地址,这样就行了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
图片不要存到数据库,太占空间了而且读取出来也慢。
我一般都是把图片在电脑上的绝对路径存放在数据库,要的时候直接把路径拿出来就能读出硬盘上的图片了
我一般都是把图片在电脑上的绝对路径存放在数据库,要的时候直接把路径拿出来就能读出硬盘上的图片了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询