精华内容
下载资源
问答
  • 把图片存入数据库

    2020-09-08 15:46:36
    初学javaWeb的同学会遇见如何照片上传到数据库里面的问题,我们要照片存到数据库的话要进行如下几个步骤: 1.连接数据库 2.在数据库里面建好相应的表 3.写好增删改查照片的 mysql语句 这里我只写了增加照片,和...

    初学javaWeb的同学会遇见如何把照片上传到数据库里面的问题,我们要把照片存到数据库的话要进行如下几个步骤:

    1.连接数据库 2.在数据库里面建好相应的表 3.写好增删改查照片的 mysql语句 这里我只写了增加照片,和查询照片的mysql语句。

    工具说明 我用的是 Eclipse 开发工具 数据库是 mysql数据库

    1.连接数据库

    package com.jx.util;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    
    public class DbUtil {
        
        /**
         *
         * @DbUtil类的作用 jdbc 的一些简单配置
         * dbUrl
         * dbusername
         * dbpassword
         * jdbcName
         * @author 蒋鑫
         */
    
        private String dbUrl="jdbc:mysql://localhost:3306/mysql57";
        private String dbUserName="root";
        private String dbPassword="root";
        private String jdbcName="com.mysql.jdbc.Driver";
        
        /**
         * 获取数据库连接
         * @return
         * @throws Exception
         */
        public Connection getCon() throws Exception{
            Class.forName(jdbcName);
            Connection con=DriverManager.getConnection(dbUrl,dbUserName,dbPassword);
            return con;
        }
        
        /**
         * 关闭数据库连接
         * @param con
         * @throws Exception
         */
        public void closeCon(Connection con) throws Exception{
            if(con!=null){
                con.close();
            }
        }
        
        /**
         * 建立一个main方法测试是否可以连接数据库成功!
         * @param args
         * @author 蒋鑫
         */
        
        public static void main(String[] args) {
            DbUtil dbUtil=new DbUtil();
            try {
                dbUtil.getCon();
                System.out.println("数据库连接成功");
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }

    里面不仅有链接数据库的方法我还在最下面写了一个main方法进行单独测试。直接运行这个类就可以测试数据库有么有链接成功!

    数据库连接成功后,我们开始编写 实际操作照片的代码。比如对数据库进行操作的DAO

    package com.jx.dao;
    
    import java.io.BufferedInputStream;
    import java.sql.Blob;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    
    import com.jx.util.DbUtil;
    
    /*
     * 这个类的作用就是把图片添加进去,
     * 然后在从数据库把图片查找出来是blob类型
     * 然后放在一个文件夹的位置
     * @auther 蒋鑫
     */
    public class DAO {
        
        // 添加图片
        public void insertImageInfo( byte[] img, String imageName) throws Exception {
            Connection conn = null;
            PreparedStatement pstm = null;
            DbUtil jdbc = null;
            StringBuffer sb = null;
            try {
                sb = new StringBuffer();
                jdbc = new DbUtil();
                conn = jdbc.getCon();
                StringBuffer sql = sb.append(sql语句根据你自己的数据内容写,所以我删了写的mysql语句给你写个注释);
                pstm = conn.prepareStatement(sql.toString());
                pstm.setBytes(1, img); // 以字节数组的形式写入
                pstm.setString(2, imageName);
                pstm.setString(3, name);
                
                pstm.executeUpdate();
            } catch (Exception e) {
                throw new RuntimeException(e);
    
            }
        }
            //查询单个照片出来 类型blob
        public Blob selectOneImage(String name) throws Exception {
            BufferedInputStream bufferImage = null;
            Connection conn = null;
            PreparedStatement pstm = null;
            ResultSet rs = null;
            DbUtil jdbc = null;
            StringBuffer sb = null;
            Blob blob = null;
            try {
                sb = new StringBuffer();
                jdbc = new DbUtil();
                conn = jdbc.getCon();
                StringBuffer sql = sb.append(sql语句根据你自己的数据内容写,所以我删了写的mysql语句给你写个注释);
                pstm = conn.prepareStatement(sql.toString());
                pstm.setString(1, name);
                rs = pstm.executeQuery();
                while (rs.next()) {
                    // 必须强制类型转换
                    blob = (Blob) rs.getBlob("image");
                    // bufferImage = new BufferedInputStream(blob.getBinaryStream());
                }
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
            return blob;
        }
    
            //获得照片的名字
        public String getImageName(String name) throws Exception {
            BufferedInputStream bufferImage = null;
            Connection conn = null;
            PreparedStatement pstm = null;
            ResultSet rs = null;
            DbUtil jdbc = null;
            StringBuffer sb = null;
            try {
                sb = new StringBuffer();
                jdbc = new DbUtil();
                conn = jdbc.getCon();
                StringBuffer sql = sb.append(sql语句根据你自己的数据内容写,所以我删了写的mysql语句给你写个注释 比如什么SELECT * FROM 什么的);
                pstm = conn.prepareStatement(sql.toString());
                pstm.setString(1, name);
                rs = pstm.executeQuery();
                while (rs.next()) {
                    return rs.getString(1);
                }
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
            return null;
        }
    
    }

    这是我的源码 还有我的数据库 表示这样写的  表面 image 列名是imageName 主键 非空 varchar 255 然后是blob 存放二进制文件的列。大家不管是什么数据库都可以建立一张这样的表格!还有这些方法是有参方法 所以在方法里面除了 byte[] img, 这个是一会要传二进制文件的参数 不要更改和删除以外其他东西都可以替换成自己的!

    然后dao写好后!

    我们要写个类调用这些dao(对数据库的操作)写个类能让前台调用这些dao。

    package com.jx.util;
    
    import java.io.BufferedInputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.nio.ByteBuffer;
    import java.sql.Blob;
    import java.sql.Connection;
    import java.sql.SQLException;
    import java.util.Scanner;
    
    import com.jx.dao.DAO;
    
    /**
     * 把图片按照路径存进去到数据库
     * saveImage 按照Email 存进去还有他的路径
     * @author    蒋鑫
     *
     */
    public class ISaveImageServiceImpl {
        private static DAO saveImageDAO = new DAO();
    
        public static void saveImage(String Email, String imgPath,String imageName) throws Exception {
            Connection conn = null;
            DbUtil jdbc = null;
            int id=0;
            byte[] img = null;
            try {
                jdbc = new DbUtil();
                conn = jdbc.getCon();
                conn.setAutoCommit(false);
                File file = new File(imgPath);
                // 读入内存
                FileInputStream fis = new FileInputStream(file);
                // 建立缓冲区
                ByteBuffer bbf = ByteBuffer.allocate((int) file.length());
                byte[] array = new byte[1024];
                int length = 0;
                // 开始读取和存放数据
                while ((length = fis.read(array)) > 0) {
                    if (length != 1024) {
                        bbf.put(array, 0, length);
                    } else {
                        bbf.put(array);
                    }
                }
                // 关闭输入流
                fis.close();
                // 获取需要写的内容
                img = bbf.array();
                saveImageDAO.insertImageInfo(Email,img,imageName);
                conn.commit();
            } catch (Exception e) {
                try {
                    conn.rollback();
                } catch (SQLException e1) {
                    throw new RuntimeException(e1);
                }
                throw new RuntimeException(e);
            }
        }
    
        public static Blob getImage(String Email) throws Exception {
            Connection conn = null;
            DbUtil jdbc = null;
            BufferedInputStream bg = null;
            Blob bg1=null;
            try {
                jdbc = new DbUtil();
                conn = jdbc.getCon();
                conn.setAutoCommit(false);
                // 获取缓冲流
    //            bg = saveImageDAO.selectOneImage(imgName);
                bg1=saveImageDAO.selectOneImage(Email);
                conn.commit();
            } catch (Exception e) {
                try {
                    conn.rollback();
                } catch (SQLException e1) {
                    throw new RuntimeException(e1);
                }
                throw new RuntimeException(e);
            }
            return bg1;
        }
        
        public String getImageName(String Email) {
            Connection conn = null;
            DbUtil jdbc = null;
            BufferedInputStream bg = null;
            String bg1=null;
            try {
                jdbc = new DbUtil();
                conn = jdbc.getCon();
                conn.setAutoCommit(false);
                // 获取缓冲流
    //            bg = saveImageDAO.selectOneImage(imgName);
                bg1=saveImageDAO.getImageName(Email);
                conn.commit();
            } catch (Exception e) {
                try {
                    conn.rollback();
                } catch (SQLException e1) {
                    throw new RuntimeException(e1);
                }
                throw new RuntimeException(e);
            }
            return bg1;
        }
        
        
    //    测试用
        public static void main(String[] args) {
                Scanner input=new Scanner(System.in);
                System.out.println("请输入用户邮箱:");
                String Email=input.next();
                System.out.println("请输入图片正确地址:");
                String path=input.next();
                System.out.println("请输入图片名称:");
                String photoName=input.next();
                try {
                    saveImage(Email,path,photoName);
                    Blob bo=getImage(Email);
                    BlobUtil k=new BlobUtil();
                    k.ExportBlob("D:\\", "成功.jpg", bo);
                } catch (Exception e) {
                    e.printStackTrace();
                }
        }
    }

    源码如下使用这个类的时候必须把照片往数据的添加和从数据查询的dao写好了

    然后这个方面最下面就是一个测试main用来测试能不能把照片存进去和把照片查出来放在一个自己给定的地址。

     

     

    我又看了一遍检查了一遍

     

     

    最后还有这个类也要写上 这类的作用就是上面这个类最后  BlobUtil k=new BlobUtil();    k.ExportBlob("D:\\", "成功.jpg", bo); 用的把照片写到你电脑的上的一个位置

    package com.jx.util;
    
    
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.InputStream;
    import java.sql.Blob;
    
    public class BlobUtil{
         public static void ExportBlob(String path,String fileName, Blob myBlob) throws Exception  
          {      
            File file=new File(path+"\\"+fileName);
            if(!file.exists()){
                File binaryFile = new File(path);
                if(!binaryFile.exists()){
                    binaryFile.mkdirs();
                }
                FileOutputStream outStream = new FileOutputStream(binaryFile+"\\"+fileName);  
                InputStream inStream = myBlob.getBinaryStream();  
                int size=(int) myBlob.length();
                byte[] buffer = new byte[size];  
                int length = -1;  
              
                while ((length = inStream.read(buffer)) != -1)  
                {  
                  outStream.write(buffer, 0, length);  
                  outStream.flush();  
                }  
              
                inStream.close();  
                outStream.close();  
              }   
          }
    }

    好了总共是 dao数据库操作 链接数据库 调用数据库dao进行测试 还有一个把读取到了的二进制文件blob文件转换为图片格式的类一共是四个类。记得往数据库添加的时候建立一个数据库的其中一个要设置类型为 blob用来存粗照片的。应该没有什么难的核心代码我已经贴上去了 而且这些代码是一个全部项目源码。检查了俩边上面代码一个不少一个不漏 如果你没出什么错的话 应该直接可以用的。

    展开全文
  • 通过二进制数据流的方式,读写图片,把图片存入数据库,再从数据库读取出来显示 通过二进制数据流的方式,读写图片,把图片存入数据库,再从数据库读取出来显示
  • c#中把图片存入数据库并进行读取c#中把图片存入数据库并进行读取c#中把图片存入数据库并进行读取
  • delphi 把图片存入数据库 procedure TForm1.Button1Click(Sender: TObject); // 插入图片过程var Stream:TMemoryStream;begin try Stream := TMemoryStream.Create; // 创建内存流 Image1.Picture.Graphic....

    delphi 把图片存入数据库



    procedure TForm1.Button1Click(Sender: TObject); // 插入图片过程
    var
    Stream:TMemoryStream;
    begin
    try
    Stream := TMemoryStream.Create; // 创建内存流
    Image1.Picture.Graphic.SaveToStream(Stream); // 将图片保存到内存流中
    adoquery1.Close;
    adoquery1.SQL.Clear;
    adoQuery1.SQL.Add('Insert into tbltemp (Image) values (:photo)'); // 进行插入操作
    adoQuery1.Parameters.ParamByName('photo').LoadFromStream(Stream,ftBlob); // 读取保存的内存图
    adoquery1.ExecSQL;
    finally
    Stream.Free; // 释放内存流
    end;
    end;

    procedure TForm1.Button2Click(Sender: TObject); //读取图片过程
    var
    Stream:TMemoryStream;
    Jpg:TjpegImage;
    begin
    ADOQuery1.Close;
    ADOQuery1.SQL.Text:='SELECT * FROM tbltemp'; // 查询图片
    ADOQuery1.Open;
    if not ADOQuery1.FieldByName('Image').IsNull then
    begin
    Stream:=TMemoryStream.Create ;
    Jpg:=TjpegImage.Create ;
    TBlobField(ADOQuery1.FieldByName('Image')).SaveToStream(Stream); // 显示的转换为BlobField并保存到内存流
    Stream.Position :=0;
    jpg.LoadFromStream(Stream); // 加载图片
    image2.Picture.Assign(Jpg);
    end
    else
    begin
    image2.Picture :=nil;
    end;
    end;

    转载于:https://www.cnblogs.com/angelbd/p/3373087.html

    展开全文
  • 网上关于ASP.NET上传图片数据库的资料非常多,常用的如下:存储图片类型数据有以下几种方式
  • 图片存入数据库,首先要在数据库中建立一张表,将存储图片的字段类型设为Image类型,用FileStream类、BinaryReader图片读成字节的形式,赋给一个字节数组,然后用ADO.SqlCommand对象的ExecuteNonQuery()方法来数据...
  • LINQ to SQL把图片存入数据库,再取出数据库通过PictureBox显示在WinForm界面 查找特定图片并转化成字符数组的方法 private byte[] OPenPic() { //选择文件 OpenFileDialog openFileDialog = new ...

    LINQ to SQL把图片存入数据库,再取出数据库通过PictureBox显示在WinForm界面

    • 查找特定图片并转化成字符数组的方法
     private byte[] OPenPic()
            {
                //选择文件
                OpenFileDialog openFileDialog = new OpenFileDialog();
                openFileDialog.Multiselect = true;
                //文件格式
                openFileDialog.Filter = "*jpg|*.JPG|*.GIF|*.GIF|*.png|*.png";
                //还原当前目录
                openFileDialog.RestoreDirectory = true;
                //默认的文件格式
                openFileDialog.FilterIndex = 1;
                if (openFileDialog.ShowDialog() == DialogResult.OK)
                {
                    string path = openFileDialog.FileName;
                    FileStream fs = new FileStream(path, FileMode.Open);
                    BinaryReader br = new BinaryReader(fs);
                    byte[] imagebytes=new byte[fs.Length];
                    imagebytes = br.ReadBytes(Convert.ToInt32(fs.Length));
                    return imagebytes;
                }
                else
                {
                    return null;
                }
            }
    • 把图片显示在PictureBox中,用下面的方法将获得的字符数组转换成Bitmap类型就可以在PictureBox中
     //将字符数组转换成用于处理由像素的数据
            private Bitmap GetData(byte[] imagebytes)
            {
                MemoryStream ms = new MemoryStream(imagebytes);
                Bitmap bmtp = new Bitmap(ms);
                return bmtp;
            }
    • 把PictureBox中的图片用LINQ to SQL存入数据库中
            //向数据库中添加文本和图片数据
            private void button1_Cluick(object sender, EventArgs e)
            {
                try
                {
                    DataClassesDataContext dcdc = new DataClassesDataContext();
                    TextEvolution te = new TextEvolution();
                    te.SID = Convert.ToInt32(sid.Text);
                    te.Character = character.Text;
                    te.Text = text.Text;
                    te.Notes = notes.Text;
                    te.MinImage = imagebytes1;
                    te.MaxImage = imagebytes2;
                    dcdc.TextEvolution.InsertOnSubmit(te);
                    dcdc.SubmitChanges();
                    MessageBox.Show("添加成功");
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
    • 用LINQ to SQL把数据库中的数据取出显示在PictureBox中
      //从数据库中取出制定文本和图像
            private void button_Click(object sender, EventArgs e)
            {
                Form1 m=new Form1;
                try
                {
                    DataClassesDataContext dcdc = new DataClassesDataContext();
                    var te = dcdc.TextEvolution.FirstOrDefault(o => o.SID == Convert.ToInt32(sid.Text.Trim()));
                    if (te == null)
                    {
                        MessageBox.Show("ERROr");
                    }
                    character.Text = te.Character;
                    text.Text = te.Text;
                    notes.Text = te.Notes;
                    picmin1.Image = m.GetData(te.MinImage.ToArray());
                    picmax1.Image = m.GetData(te.MaxImage.ToArray());
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }

     

     

    展开全文
  • 介绍: 可能有很多的时候,我们急需把图片存入数据库当中。在一些应用程序中,我们可能有一些敏感的资料,由于存储在文件系统(file system)中的东西,将很容易被某些用户盗取,所以这些数据不能存放在文件系统中...

    介绍:
       可能有很多的时候,我们急需把图片存入到数据库当中。在一些应用程序中,我们可能有一些敏感的资料,由于存储在文件系统(file system)中的东西,将很容易被某些用户盗取,所以这些数据不能存放在文件系统中。
      在这篇文章中,我们将讨论怎样把图片存入到Sql2000当中。
      在这篇文章中我们可以学到以下几个方面的知识:
    1. 插入图片的必要条件
    2. 使用流对象
    3. 查找准备上传的图片的大小和类型
    4. 怎么使用InputStream方法?

     


    插入图片的必要条件
    在我们开始上传之前,有两件重要的事我们需要做:
    #Form 标记的 enctype 属性应该设置成 enctype="multipart/form-data"
    # 需要一个<input type=file>表单来使用户选择他们要上传的文件,同时我们需要导入 System.IO名称空间来处理流对象
    把以上三点应用到aspx页面。同时我们需要对SqlServer做以下的准备。
    # 需要至少含有一个图片类型的字段的表
    # 如果我们还有另外一个变字符类型的字段来存储图片类型,那样会更好一些。
    现在,我们准备了一个Sql表(包含了一个image数据类型的字段),还有<input type=file>标记。当然我们还得准备Submit按钮,以便用户在选择了图片以后提交。在这个按钮的Onclick事件里,我们需要读取选取图片的内容,然后把它存入到表里。那我们先来看看这个Onclick事件。

     

    提交按钮的Onclick事件的代码:


    这是怎么工作的呢?
    PersonImage是HTMLInputFile控件的对象。首先需要获得图片的大小,可以使用下面的代码实现:
    intImageSize = PersonImage.PostedFile.ContentLength
    然后返回图片的类型使用ContenType属性。最后,也是最重要的事就是取得Image Stream,这可以用以下代码实现:

    我们需要一个字节型数组来存储image 内容。读取整个图片可以使用Stream对象的Read方法来实现。Read(in byte[] buffer,int offset,int count)方法有三个参数。【关于Read方法的详细可以参看.Net FrameWorkSDK】他们是:
    buffer
    字节数组。此方法返回时,该缓冲区包含指定的字符数组,该数组的 offset 和 (offset + count) 之间的值由从当前源中读取的字节替换。
    offset
    buffer 中的从零开始的字节偏移量,从此处开始存储从当前流中读取的数据。
    count
    要从当前流中最多读取的字节数。
    这个Read方法用以下代码实现:

    现在,我们已经读取了整个图片的内容,下一步,我们要把这些内容存入到sql 表。我们将使用存储过程来完成插入图片类型和图片内容到sql 表。如果你浏览了上面的代码,你将会发现我们使用了sqldbtype.image的数据类型(datatype)。Ok了,完成了这些,我们也就成功的把图片存入到SqlServer中了。下面是我们编写的aspx页面。

    结论:
    我们已经讨论了如何把图片存入到Sql Server,那么我们如何从SqlServer中读取图片呢?可以参看其他文章:在Asp.Net中从SqlServer中检索图片。

    展开全文
  • delphi 把图片存入数据库

    千次阅读 2006-05-10 11:50:00
    procedure TForm1.Button1Click... // 插入图片过程var Stream:TMemoryStream;begin try Stream := TMemoryStream.Create; // 创建内存流 Image1.Picture.Graphic.SaveToStream(Stream); // 将图片保存到内存
  • 一、设计数据库testimg.mdb为方便调试,设计表imgurl,其中两个字段:id(自动编号、关键字)、img(OLE 对象)二、连接数据库文件conn.asp db_path="testimg.mdb"set conn=server.CreateObject("ADODB.connection...
  • 图片存入数据库 图片 数据库 Oracle
  • 图片存入数据库从数据库中读取图片.txt
  • php图片存入数据库

    2013-11-19 15:49:23
    php / mysql 图片存入数据库和显示
  • 主要介绍了php上传图片存入数据库示例,需要的朋友可以参考下
  • mfc平台 将bmp图片存入数据库,并可以导出数据库里的图片到mfc控件上
  • 1. 引言 数据库应用程序,特别是基于WEB的数据库应用程序,常会涉及到图片...我们必须把图片存入数据库,然后通过编程动态地显示我们需要的图片。实际操作中,可以利用JSP的编程模式来实现图片的数据库存储和显示。
  • 图片存入数据库中 将图片存入数据库中 将图片存入数据库
  • 本文件成功地为你展示了如何将一副图片存入数据库并将其显示在页面上。让你轻松攻克PHP图片存入数据库技术
  • VB将图片存入数据库

    2010-10-29 21:01:19
    这是将图片存入数据库中,用起来也还比较方便,大家可以试下
  • 主要介绍了详解JAVA生成将图片存入数据库的sql语句实现方法的相关资料,这里就是实现java生成图片并存入数据库的实例,需要的朋友可以参考下
  • 图片存入数据库,并从数据库中读取
  • 在很多时候,我们有这样的需求:把图片存入数据库当中。在一些应用程序中,我们可能有一些敏感的资料,由于存储在文件系统(file system)中的东西,将很容易被某些用户盗取,所以这些数据不能存放在文件系统中。
  • 图片存入数据库

    2011-09-21 14:36:05
    ACCESS数据库中插入二进制图片,保存为二进制格式

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 32,875
精华内容 13,150
关键字:

怎么把图片存入数据库