数据库中存储/读取图片

//新的一年祝大家开年好运

 //创建数据库:
CREATE TABLE  imags (
 id int(11) NOT NULL,
 name varchar(255) DEFAULT NULL,
 imag longblob,
 PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

//进行代码演示:
package com.memory.imags.cckj;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Blob;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class  DButil {
  private static String driver = "com.mysql.jdbc.Driver";
  private static String url = "jdbc:mysql://localhost:3306/test";//test指的是数据库名
  private static String user = "root";//连接数据库账号
  private static String password = "sa123456";//连接数据库密码

  private static Connection conn;
  private static PreparedStatement ps;
  private static ResultSet rs;


  /**
   * 获得连接  这里单独封装一个获取数据库连接的方法
   */
  public static void getConnection() {
      try {
          Class.forName(driver);
          conn = DriverManager.getConnection(url, user, password);
          if(!conn.isClosed())//判断是否连接到数据库
             System.out.println("Succeeded connecting to the Database!");
      } catch (SQLException e) {
    	  System.out.println("jdbc:"+e.getMessage() );
      } catch (ClassNotFoundException e) {
      	System.out.println("jdbc:"+e.getMessage());
      }
  }

  /**
   * 关闭连接  这里单独封装了一个close方法用来关闭资源
   */
  public static void close() {
      try {
          if (rs != null) {
              rs.close();
          }
          if (ps != null) {
              ps.close();
          }
          if (conn != null) {
              conn.close();
          }
      } catch (Exception e) {
          System.out.println("连接关闭异常:"+e.getMessage());
      }
  }

public void add() {
    //sql插入语句
    String sql = "insert into imags values(?,?,?) ";
    //将本地图片插入到数据库中                 
    File file=new File("C:\\Users\\mldn\\Desktop\\login1.jpg");
    getConnection();//调用方法获取数据库连接
    try {
        FileInputStream fi = new FileInputStream(file);
        ps = conn.prepareStatement(sql);//执行sql语句
        ps.setInt(1, 2);
        ps.setString(2, "image1");
        ps.setBlob(3, fi);

        int f = ps.executeUpdate();
        System.out.println("打印输出:"+f);
        if (f > 0) {
            System.out.println("插入成功");
        } else {
            System.out.println("插入失败");
        }
        //养成好习惯,关闭资源
        ps.close();
        conn.close();

    } catch (SQLException e) {
        e.printStackTrace();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }

}
 
public void select() {
	//获取数据的连接
	getConnection();
    Blob get_image; //接收从数据获取到的图片类型的数据
    
    String sql = "select * from imags";
    try {
// 将读取到的图片存放到指定的路径中,并命名为bb.jpg
        FileOutputStream fileOutputStream = new  FileOutputStream("C:\\Users\\mldn\\Desktop\\img\\bb.jpg");

        ps = conn.prepareStatement(sql);

        ResultSet resultSet = ps.executeQuery();

        while (resultSet.next()) {
            get_image = resultSet.getBlob("imag");
            //将读取到的Blob对象转成字节流
            InputStream inputStream = get_image.getBinaryStream();
            int a;
            byte b[] = new byte[1024];
            while ((a = inputStream.read(b)) != -1) {
                fileOutputStream.write(b, 0, a);
            }
        }
        ps.close();
        conn.close();

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

}

//测试方法
public static void main(String[] args) {
  
  DButil dbutil = new DButil();
    //调用方法向数据中存入图片
    dbutil.add();
    //调用方法将数据库中的图片读出,并放到本地。
    dbutil.select();
    
   }
}

图片成功插入到数据库中
在这里插入图片描述

图片成功有数据读取到本地:

在这里插入图片描述

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据库上传、存储和读取PDF文件,可以按照以下步骤进行操作: 1. 创建一个数据库表格来存储PDF文件的相关信息。表格可以包含字段如下: - id: 文件的唯一标识符 - filename: 文件名 - filetype: 文件类型 - filedata: 文件数据(二进制格式) - filesize: 文件大小 - created_at: 创建时间 - updated_at: 更新时间 2. 在应用程序,提供一个文件上传的界面,允许用户选择并上传PDF文件。 3. 在后端接收到上传的文件后,将文件内容读取为二进制数据,并将其存储数据库。可以使用数据库的API或ORM(对象关系映射)工具来执行插入操作。 4. 将文件的相关信息(如文件名、文件类型、文件大小等)也保数据库对应的字段。 5. 当需要读取PDF文件时,从数据库检索相应的记录,并将文件数据返回给前端。前端可以使用相应的PDF阅读器库来显示PDF文件内容。 注意事项: - 在存储和读取大型PDF文件时,应该考虑数据库性能和存储空间的限制。可以使用适当的压缩算法或文件存储策略来减小文件大小。 - 对于较大的文件,可能需要将其分块存储并进行适当的索引,以提高检索性能。 - 在数据库存储文件时,确保数据库连接和操作是安全的,并进行适当的身份验证和授权控制,以防止未授权的访问和恶意文件上传。 这只是一个简单的概述,实际实现可能因应用程序和数据库的不同而有所差异。具体的实现方法可以根据你使用的编程语言和数据库系统进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值