把图片存入数据库

数据库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(
1 1 );
            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();
            }
        }
    }
}

 

 

转载于:https://www.cnblogs.com/qixin622/archive/2009/07/17/1525300.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值