聚合 管理  

Blog Stats

News

我使用新博客啦:
http://www.linjunhai.com/
大家到我的新博客上看看吧!

随笔分类(28)

文章分类(4)

随笔档案(53)

文章档案(4)

相册

相关链接


林俊海的博客

超级大菜鸟,每天要自强!

我们知道可以把二进制数据存进数据库里去,可是没做过哦!
前两天一网友问题怎么做?才去查一下资料,试验了一下

//Create.java
import java.sql.*;

public class Create {
 public static void main(String[] args) {
  Connection con;    
  Statement st;  
  try {
   Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");    
   String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=C:\\Test\\data.mdb";    
   con = DriverManager.getConnection(url, "", "");    
   st = con.createStatement();

   st.execute("CREATE TABLE mytable(id autoincrement, picname varchar(50), pic image);");
   //我用 Access 做下简单测试, Oracle 数据库用 "CREATE TABLE mytable(id autoincrement, picname varchar(50), pic BLOB);" 建表
   st.close();
   con.close();
  } catch(Exception e) {
   e.printStackTrace();
  }
 }
}

// SavePic.java  将图片保存至数据库
import java.sql.*;
import java.io.*;

public class SavePic {
 public static void main(String[] args) {
  Connection con;    
  PreparedStatement st; 
  
  try {
   Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");    
   String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=C:\\Test\\data.mdb";    
   con = DriverManager.getConnection(url, "", "");   
   String sql = "INSERT INTO mytable(picname, pic) values('雅林',?)";
   st = con.prepareStatement(sql);
   File f = new File("C:/Test/a.jpg");
   FileInputStream fis = new FileInputStream(f);
   st.setBinaryStream(1, fis, (int)f.length());
   st.executeUpdate();
   st.close();
   con.close();
  } catch(Exception e) {
   e.printStackTrace();
  }
 }
}

//ReadPic.java   从数据库中读出图片存成文件
import java.sql.*;
import java.io.*;

public class ReadPic {

 public static void main(String[] args) {
  Connection con;    
  Statement st; 
  
  try {
   Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");    
   String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=C:\\Test\\data.mdb";    
   con = DriverManager.getConnection(url, "", "");   
   String sql = "SELECT pic FROM mytable WHERE picname='雅林'";
   st = con.createStatement();
   ResultSet rs = st.executeQuery(sql);
   rs.next();
   File f = new File("C:/Test/b.jpg");
   FileOutputStream fos = new FileOutputStream(f);
   InputStream is = rs.getBinaryStream("pic");
   int c;
   byte b[] = new byte[4*1024];
   while ((c=is.read(b))!=-1) {
    fos.write(b, 0, c);
   }
   fos.flush();
   is.close();
   st.close();
   con.close();
  } catch(Exception e) {
   e.printStackTrace();
  }

 }

}

posted on 2007-03-30 00:30 林俊海 阅读(2189) 评论(5)  编辑  收藏 所属分类: JAVA天地

评论

# re: 数据库存储图片 [JAVA] 2007-03-30 09:12 Tortoise
支持。。  回复  更多评论
  

# re: 数据库存储图片 [JAVA] 2007-05-04 10:41 tdh
请问java存word,excel等跟图片一样吗,如果不一样怎么实现。谢谢  回复  更多评论
  

# re: 数据库存储图片 [JAVA] 2007-05-04 13:08 tdh
我测试了下,楼主的方法建数据库成功了,但存图片不行,根本存不进去,也显示不出来  回复  更多评论
  

# re: 数据库存储图片 [JAVA] 2007-05-05 02:15 林志斌
今天我发现我在建表后,忘了
st.close();
con.close();

我再次测试了一下,也成功了,建议 tdh 再测试一下.
我在 access 中测试存取 word, excel 文件也通过了.
  回复  更多评论
  

# re: 数据库存储图片 [JAVA] 2007-05-20 17:14 tdh
今天试了下,楼主的没错,可以运行了。谢谢!  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: