易截截图软件、单文件、免安装、纯绿色、仅160KB

通过Java或Jsp向数据库存取二进制图片


  1 MySQL存储大容量的二进制文件的格式是blob,其实除了图片还可以存别的
  2 要向数据库存储二进制的文件一定要把要存储的数据转换成二进制流
  废话就不多说了,大家看看代码很容易明白,先来看一个app程序,当然首先您要在数据库中先建立一个用于保存图片的表和相应的列,数据格式为blob
    package com.lizhe;
  import Java.io.*;
  import java.sql.*;
  public class PutImg {
  public void putimg() {
  try {
  Class.forName("org.gjt.mm.mysql.Driver").newInstance();
  String url = "JDBC:mysql://localhost/img?user=root&password=root&useUnicode=true&characterEncoding=gbk";
  Connection conn = DriverManager.getConnection(url);
  Statement stmt = conn.createStatement();
  //stmt.execute("insert into imgt (id) values (5)");
  stmt.close();
  PreparedStatement pstmt = null;
  String sql = "";
  File file = new File("c:log.jpg");
  InputStream photoStream = new FileInputStream(file);
  //sql = " UPDATE imgt SET img = ? ";
  sql = "INSERT INTO imgtable (img) VALUES (?)";
  pstmt = conn.prepareStatement(sql);
  pstmt.setBinaryStream(1, photoStream, (int) file.length());
  pstmt.executeUpdate();
  pstmt.close();
  conn.close();
  } catch (Exception e) {
  e.printStackTrace();
  }
  }
  public static void main(String args[]){
  PutImg pi=new PutImg();
  pi.putimg();
  }
  }
  InputStream photoStream = new FileInputStream(file);
  可以很清楚的看到我们首先把一个图片文件(当然也可以是别的什么文件)转换成了一个二进制输入流
  pstmt.setBinaryStream(1, photoStream, (int) file.length());
  这个方法建议大家去查一下API文档,第一个参数是通配符位置没的说,第二个参数是流,这和以往的string类型的参数不太一样,我刚看到的时候也觉得豁然开朗了,但是到这里还没完,不同于以往的字符串参数,这里我们还需要第三个参数来设置这个流的长度,这里也就是这个文件的长度,导出数据库中的sql,一切都清楚了
  INSERT INTO `m_diy` VALUES (2,? JFIF HH?? ExifMM* b j ( 1 r 2 ?i H H Ado


相关文档:

深入研究java对String字符串对象的创建以及管理

Constant Pool常量池的概念:
在讲到String的一些特殊情况时,总会提到String Pool或者Constant Pool,但是我想很多人都不太
明白Constant Pool到底是个怎么样的东西,运行的时候存储在哪里,所以在这里先说一下Constant Pool的内容.
String Pool是对应于在Constant Pool中存储String常量的区域.习惯称为String Pool,也有人称 ......

Java 实现选择排序代码

选择排序就是从数据里面找到最小的放到最左边,每次比较所有数据后交换一次.
我从之前的冒泡排序类继承下来的.
package array;
/**
*
* @author leon.lee
*/
public class SelectionSort extends BubbleSort{
public SelectionSort(int arrayLength){
super(arrayLength);
}
@Override
......

java中会存在内存泄漏吗

会。 所谓内存泄露就是指一个不再被程序使用的对象或变量一直被占据在内存中。
   java导致内存泄露的原因很明确:长生命周期的对象持有短生命周期对象的引用就很可能发生内存泄露,尽管短生命周期对象已经不再需要,但是因为长生命周期对象持有它的引用而导致不能被回收,这就是java中内存泄露的发生场景。
&n ......

Java对象的序列化和反序列化

当两个进程在进行远程通信时,彼此可以发送各种类型的数据。无论是何种类型的数据,都会以二进制序列的形式在网络上传送。发送方需要把这个java对象转换为字节序列,即java对象序列号,才能在网络上传送;接收方则需要把字节序列再恢复为Java对象,即反序列化。
  把Java对象转换为字节序列的过程称为对象的序列化。
  ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号