把图片存入数据库

数据库SQL SERVER 2000

/*
---------------表结构------------
表名:student2

+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| id     | int(4)      | NO   | PRI | NULL    |       |
| name   | varchar(20) | YES  |     | NULL    |       |
| stupic | image        | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+

*/

把图片存入数据库

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 
*/
package storeblob;

import java.sql.*;
import java.io.*;

/**
 *
 * 
@author Administrator
 
*/
public class StoreBLOB {

    
/**
     * 
@param args the command line arguments
     
*/
    
public static void main(String[] args) {
        String url 
= "jdbc:sqlserver://localhost:1433;DatabaseName=test";

        String user 
= "sa";//这里替换成你自已的数据库用户名
        String password = "";//这里替换成你自已的数据库用户密码

        Connection con 
= null;
        PreparedStatement ps 
= null;
        InputStream in 
= null;
        
try {
            con 
= DriverManager.getConnection(url, user, password);
            
//从本地硬盘读取一张读片
            in = new FileInputStream("d:/111/001.png");
            ps 
= con.prepareStatement("insert into student2 values(?,?,?)");
            ps.setInt(
11);
            ps.setString(
2"qixin");
            ps.setBinaryStream(
3, in, in.available());
            ps.executeUpdate();
        } 
catch (IOException e) {
            
// TODO Auto-generated catch block
            e.printStackTrace();
        } 
catch (SQLException e) {
            
// TODO Auto-generated catch block
            e.printStackTrace();
        } 
finally {
            
try {
                
//关闭流
                if (in != null) {
                    in.close();
                }
            } 
catch (IOException e) {
                
// TODO Auto-generated catch block
                e.printStackTrace();
            }
            
try {
                
//关闭相关连接
                ps.close();
                con.close();
            }
            
catch(Exception e)
            {
                e.printStackTrace();
            }
        }

    }
}

 

把图片从数据库中取出

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 
*/
package storeblob;

import java.io.*;
import java.sql.*;

/**
 *
 * 
@author Administrator
 
*/
public class GetBLOB {

    
public static void main(String[] args) {
        String url 
= "jdbc:sqlserver://localhost:1433;DatabaseName=test";

        String user 
= "sa";//这里替换成你自已的数据库用户名
        String password = "";//这里替换成你自已的数据库用户密码
        Connection con = null;
        Statement st 
= null;
        ResultSet rs 
= null;
        InputStream in 
= null;
        OutputStream out 
= null;

        
try {
            con 
= DriverManager.getConnection(url, user, password);
            st 
= con.createStatement();
            rs 
= st.executeQuery("select stupic from student2 where id=1");
            rs.next();    
//将光标指向第一行
            
//从rs中读取stupic放进InputStream对象中
            in = rs.getBinaryStream("stupic");
            
//申明byte数组,用来存放图片流
            byte[] b = new byte[40000];
            in.read(b);    
//从InputStream对象中读取数据放进byte数组中
            
//实例化OutputStream对象,在D盘创建一个图片文件
            out = new FileOutputStream("d:/222.jpg");
            
//将文件输出,内容则为byte数组里面的数据
            out.write(b);
            out.flush();

        } 
catch (SQLException e) {
            
// TODO Auto-generated catch block
            e.printStackTrace();
        } 
catch (IOException e) {
            
// TODO Auto-generated catch block
            e.printStackTrace();
        } 
finally {
            
try {
                
if (in != null) {
                    in.close();
                }
                
if (out != null) {
                    out.close();
                }
            } 
catch (IOException e) {
                
// TODO Auto-generated catch block
                e.printStackTrace();
            }
            
try {
                
//关闭相关连接
                rs.close();
                st.close();
                con.close();
            }
            
catch(Exception e)
            {
                e.printStackTrace();
            }
        }
    }
}

 

 

posted @ 2009-07-17 09:21  齐心  Views(2098)  Comments(0Edit  收藏  举报