如何将图片插入数据库

         如何将图片,Mp3 ,或是一些二进制类型的数据插入到sqlserver,或是 Oracle 数据库 . 方法是通过流进行操作.

创建一张测试表(sqlserver2000)

create table [pictable] (
    [id] [int] identity (1, 1) not null ,
    [img] [image] not null 
) on [primary] textimage_on [primary]
go

1,插入数据库的方法(sqlserver2000)

this.getConnection() 为获得连接的方法.

public void insertPic(String path)...{
        Connection con = this.getConnection();
        String sql = "insert into picTable values(?)" ;
        try ...{
            PreparedStatement pstm = con.prepareStatement(sql);
            InputStream is = new FileInputStream(path);
            
            pstm.setBinaryStream(1, is, is.available());
            int count = pstm.executeUpdate();
            if(count>0)...{
                System.out.println("插入成功");
            }else...{
                System.out.println("插入失败");
            }
            is.close();
            pstm.close();
            con.close();
            
        } catch (Exception e) ...{
            e.printStackTrace();
        }
    }
 

 

2,从数据库中读出来的方法.(sqlserver2000)

public void readPic(int id)...{
        Connection con = this.getConnection();
        String sql = "select  * from  picTable where id=?" ;
        try ...{
            PreparedStatement pstm = con.prepareStatement(sql);
            pstm.setInt(1, id);
            ResultSet rs = pstm.executeQuery();
            rs.next();
            InputStream is = rs.getBinaryStream(2);
            
            OutputStream os = new FileOutputStream("f:/temp.jpg");
            byte[] buff = new byte[1024];
            int len = is.read(buff);
            while( len !=-1 )...{
                os.write(buff);
                len = is.read(buff);
            }
            System.out.println("写入成功");
            is.close();
            os.close();
            pstm.close();
            con.close();
        } catch (Exception e) ...{
            e.printStackTrace();
        }
    }
3,插入数据库的方法(Oracle)

public void insertBinary() ...{
        Connection con = MyConnection.getORACLEConnection();
        String sql = "insert into testBinary values(?,?)";
        try ...{
            con.setAutoCommit(false);
            PreparedStatement pstm = con.prepareStatement(sql);
            pstm.setString(1, "a1");
            pstm.setBlob(2, oracle.sql.BLOB.empty_lob());
            int count = pstm.executeUpdate();
            pstm.close();
            pstm = con.prepareStatement("select  * from testBinary where id=?");
            pstm.setString(1, "a1");
            ResultSet rs = pstm.executeQuery();
            rs.next();
            oracle.sql.BLOB blob = (BLOB) rs.getBlob(2);
            OutputStream os = blob.getBinaryOutputStream();
            FileInputStream fi = new FileInputStream("E:test.mp3");
            byte[] buff = new byte[1024];

            int len = fi.read(buff);

            while (len != -1) ...{
                os.write(buff);
                len = fi.read(buff);
            }
            pstm = con.prepareStatement(sql);
            pstm.setString(1, "a1");
            pstm.setBlob(2, blob);
            int res = pstm.executeUpdate();
            con.commit();
            pstm.close();
            con.close();

            if (res > 0) ...{
                System.out.println("success");
            }
        } catch (Exception ex) ...{
            ex.printStackTrace();
        }

    }
4,从数据库中读出来的方法.(Oracle)

public void readerBinaryStream() ...{
        Connection con = MyConnection.getORACLEConnection();
        try ...{
            java.sql.PreparedStatement pstm = con.prepareStatement(
                    "select * from testBinary where id=''a1''");
            ResultSet rs = pstm.executeQuery();
            rs.next();
            oracle.sql.BLOB blob = (BLOB) rs.getBlob(2);
            InputStream is = blob.getBinaryStream();
            FileOutputStream fi = new FileOutputStream("f:aaaa.mp3");
            byte[] buff = new byte[1024];
            int len = is.read(buff);
            while (len != -1) ...{
                fi.write(buff);
                len = is.read(buff);

            }
            fi.close();

        } catch (SQLException ex) ...{
        } catch (FileNotFoundException ex) ...{
          ex.printStackTrace();
        } catch (IOException ex) ...{
            ex.printStackTrace();
        }

    }

时间: 2024-10-29 23:44:27

如何将图片插入数据库的相关文章

将图片插入数据库并使用asp.net读取出来的正确方法

asp.net|插入|数据|数据库 将图片插入数据库并使用asp.net读取出来的正确方法 书写本文是因为今天见到CSDN的首页上一篇存在明显失误的名为"在Asp.Net中从sqlserver检索(retrieve)图片"的文章.不说其错误是因为用其方法确实能从数据库中读取出图片并显示在浏览器,说其失误是因为代码的意图不能被完全的实现,作者也似乎对http协议以及浏览器在处理http数据的流程一知半解. 1.如何出错 以下是这片文章提到的方法: Public Sub Page_Load

将图片插入数据库并使用asp.net读取出来的正确方

asp.net|插入|数据|数据库 书写本文是因为今天见到CSDN的首页上一篇存在明显失误的名为"在Asp.Net中从sqlserver检索(retrieve)图片"的文章.不说其错误是因为用其方法确实能从数据库中读取出图片并显示在浏览器,说其失误是因为代码的意图不能被完全的实现,作者也似乎对http协议以及浏览器在处理http数据的流程一知半解. 1.如何出错 以下是这片文章提到的方法: Public Sub Page_Load(sender As Object, e As Even

求助~怎么将得到的二进制图片插入到现有的xml文件中

问题描述 RT先有一个问题,需要根据xml中的一个字段值,从数据库中得到二进制图片,怎么在xml中显示这个二进制图片??? 解决方案 解决方案二: 解决方案三:是在我现有的xml文件中怎么显示我得到的二进制图片...不是生成二进制流解决方案四:图片只能在网页上显示吧解决方案五:对啊,上面所述:stringbase64String=Convert.ToBase64String(bytes,0,bytes.Length);Image1.ImageUrl="data:image/png;base64,

ASP.Net 图片存入数据库的实现代码_实用技巧

在这篇文章中,我们将讨论怎样把图片存入到Sql2000当中. 在这篇文章中我们可以学到以下几个方面的知识: 1. 插入图片的必要条件 2. 使用流对象 3. 查找准备上传的图片的大小和类型 4.怎么使用InputStream方法? 插入图片的必要条件 在我们开始上传之前,有两件重要的事我们需要做: #Form 标记的 enctype 属性应该设置成 enctype="multipart/form-data" # 需要一个<input type=file>表单来使用户选择他们

Word 2007中将图片插入或粘贴为文字环绕

在Word2007中,用户可以设置粘贴选项,以确定将图片插入或粘贴到Word2007文档中时使用哪种文字环绕方式.可以设置的的文字环绕方式包括嵌入型.四周型.紧密型.衬于文字下方.浮于文字上方.穿越型和上下型几种类型,操作步骤如下所述: 第1步,打开Word2007文档窗口,依次单击"Office按钮"→"Word选项"按钮,如图2012040332所示. 图2012040332 单击"Word选项"按钮 第2步,打开"Word选项&q

mfc-怎么把MFC CTime类型变量插入数据库的datetime中?

问题描述 怎么把MFC CTime类型变量插入数据库的datetime中? UpdateData(true); ADOConn m_adoConn; m_AdoConn.OnInitADOConn(); _bstr_t sql; sql="select * from Records"; m_pRecordset=m_AdoConn.GetRecordSet(sql); int pos=m_ctrList.GetSelectionMark(); try { m_pRecordset-&g

PHP怎么插入数据库

  PHP如何插入数据库 $ostype=$_POST['ostype']; $uuid=$_POST['uuid']; $nowtime=time(); $username='XXXX'; $userpass='XXXX'; $dbhost='localhost'; $dbdatabase='XXX'; //生成一个连接 $db_connect=mysql_connect($dbhost,$username,$userpass) or die("Unable to connect to the

取得当前插入数据库中记录的id值

在PHP中,经常需要把插入数据库中的id值取出来,而正好有这么一个函数: <?php//执行插入数据库的语句//--$getID=mysql_insert_id();//$getID即为最后一条记录的ID ?> PHP 函数 mysql_insert_id() 是返回在最后一次执行了 INSERT 查询后,由 AUTO_INCREMENT 定义的字段的值.

无组件上传文字与图片至数据库之gztiger解决方案

解决|上传|数据|数据库|无组件 曾一度为图片与文字上传至数据库困扰,<化境无组件上传图片2.0>写得很好,但不是完全适合自己.经过认真阅读源代码.修改与测试,将其改为无组件上传多条文字信息与多张图片至数据库.并在iis5+access2000+asp测试通过.现把源代码公布,希望能对那些曾经也被这问题困扰的朋友有所帮助.同时希望各位同道斧正. 声明:<化境无组件上传图片2.0>并非我写的,在此对<化境无组件上传图片2.0>的作者真诚说声:谢谢!代码如下: upfile