达人又叫什么:数据库存储图片 [JAVA] - 林志斌的博客 - BlogJava

来源:百度文库 编辑:九乡新闻网 时间:2024/04/27 23:34:00

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

//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();
  }

 }

}

数据库存储图片 [JAVA] - 林志斌的博客 - BlogJava 数据库中的-脏读,幻读,不可重复读[转] - Java天空 - BlogJava JSON与JAVA数据的转换 - J2EE社区 - BlogJava Java程序连接各种数据库的方法 JAVA中有关byte,int,long这些基本数据类型的存储方式以及负数在JAVA中的表示方式 - Super's Blog - 博客园 存储过程 简介 数据库 深入Java对象及元素的存储区域 JAVA如何连接数据库 Java连接Oracle数据库 JAVA连接各种数据库 文本分类入门(八)中英文文本分类的异同 - Jasper's Java Jacal - BlogJava 文本分类入门(九)文本分类问题的分类 - Jasper's Java Jacal - BlogJava sql server2005 存储数据库表名、字段名、描述的数据库表和sql语句 论IP地址在数据库中应该用何种形式存储 - 吴秦(Saylor) - 博客园 程序员的本质_最JAVA - JAVA编程 J2EE dhtmlx 数据库 开源技术 Go... 文本分类入门(番外篇)特征选择与特征权重计算的区别 - Jasper's Java Jacal - BlogJava zhrb的空间 - BlogJava 数据库触发器 - chinayuan的专栏 - CSDN博客 通过Eclipse插件Bytecode Outline方便了解Java字节码 - DANCE WITH JAVA - BlogJava 关于存储过程的ADO调用的一些心得(输出参数,返回值)-数据库专栏,SQL Server-... DB2 最佳实践: DB2 数据库存储机制1 Oracle数据库中的存储层次体系-----数据文件--文件 将图片以二进制的形式添加到数据库中 在Struts 2中实现文件上传 - Max On Java - BlogJava