java将图片存入数据库

java将图片存入数据库

  (2013-01-15 19:48:47)
标签: 

it

分类: java
import java.sql.*;
import java.io.*;
import java.nio.*;

public class UploadImage {
       protected Connection dbConnection;
       protected String driverName = "com.mysql.jdbc.Driver";
       protected String dbURL = "jdbc:mysql://localhost/sample_db";
       protected String userID = "root";
       protected String passwd = "111111";

       public boolean storeImage(String sqlstr, File file) {
              try {
                     FileInputStream fin = new FileInputStream(file);
                     ByteBuffer nbf = ByteBuffer.allocate((int) file.length());
                     byte[] array = new byte[1024];
                     int offset = 0, length = 0;
                     while ((length = fin.read(array)) > 0) {
                            if (length != 1024)
                                   nbf.put(array, 0, length);
                            else
                                   nbf.put(array);
                            offset += length;
                     }
                     fin.close();
                     byte[] content = nbf.array();
                     return setImage(sqlstr, content);

              } catch (FileNotFoundException e) {
                     e.printStackTrace();
              } catch (IOException e) {
                     e.printStackTrace();
              }
              return false;
       }

       private boolean setImage(String sqlstr, byte[] in) {
              boolean flag = false;
              if (sqlstr == null)
                     sqlstr = "select * from picture_db";
              try {
                     Class.forName(driverName);
                     dbConnection = DriverManager.getConnection(dbURL, userID, passwd);
                     Statement stmt = dbConnection.createStatement(
                                   ResultSet.TYPE_SCROLL_INSENSITIVE,
                                   ResultSet.CONCUR_UPDATABLE);
                     ResultSet rs = stmt.executeQuery(sqlstr);
                     if (rs.next()) {
                            rs.updateBytes(2, in);
                            rs.updateRow();
                     } else {
                            rs.moveToInsertRow();
                            rs.updateString(1, "lena");
                            rs.updateBytes(2, in);
                            rs.insertRow();
                     }
                     rs.close();
                     flag = true;
              } catch (Exception e) {
                     e.printStackTrace();
              }
              return flag;
       }  

       public static void main(String[] args) {
              UploadImage upload = new UploadImage();
              try {
                     File file = new File("/home/dz/workspace/lena.jpg");
                     if (upload.storeImage(null, file))
                            System.out.print("true");
                     else
                            System.out.print("False");
              } catch (Exception e) {
                     e.printStackTrace();
              }
       }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值