JDBC读取图片(Blob)类型的数据

简介: 学习记录

步骤

①获取连接。

②编写SQL语句。

③预编译SQL语句,获取ResultSet对象。

④获取数据。(对于Blob类型数据,使用getBlob()方法获取一个Blob对象)。

⑤调用Blob对象的getBinaryStream()方法获取一个输入流。

⑥使用输出流将数据进行保存。

示例:将上面添加的小张数据的头像保存到桌面。

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.sql.DriverManager;
import java.util.Properties;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.PreparedStatement;
 
public class BlobTest {
    public static void main(String[] args) throws Exception {
        //1.读取文件中的信息
        InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("jdbc.properties");
        //将用户名和密码封装在Properties中
        Properties pros = new Properties();
        pros.load(is);
        String user = pros.getProperty("user");
        String password = pros.getProperty("password");
        String url = pros.getProperty("url");
        String driverClass = pros.getProperty("driverClass");
        //2.加载驱动
        Class.forName(driverClass);
        //3.获取连接
        Connection conn = (Connection) DriverManager.getConnection(url, user, password);
        
        String sql = "insert into customers(name,email,birth,photo)values(?,?,?,?)";
        PreparedStatement ps = (PreparedStatement) conn.prepareStatement(sql);
        ps.setObject(1, "远坂凛");
        ps.setObject(2, "ybl@qq.com");
        ps.setObject(3, "2000-01-01");
        
        FileInputStream is1 = new FileInputStream(new File("ybl1.png"));
        ps.setBlob(4, is1);
        ps.execute();
        conn.close();
        ps.close();        
    }
}
相关文章
|
6月前
|
SQL Oracle 关系型数据库
实时计算 Flink版产品使用合集之使用JDBC方式读取Oracle的number类型时,通过什么方式进行映射
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
158 0
实时计算 Flink版产品使用合集之使用JDBC方式读取Oracle的number类型时,通过什么方式进行映射
|
程序员 数据库
Cause: com.microsoft.sqlserver.jdbc.SQLServerException: 操作数类型冲突: varbinary 与 text 不兼容
Cause: com.microsoft.sqlserver.jdbc.SQLServerException: 操作数类型冲突: varbinary 与 text 不兼容
1137 0
|
SQL Oracle Java
Spring JDBC-使用Spring JDBC获取本地连接对象以及操作BLOB/CLOB类型数据
Spring JDBC-使用Spring JDBC获取本地连接对象以及操作BLOB/CLOB类型数据
407 0
|
存储 关系型数据库 MySQL
jdbc之操作BLOB类型字段
jdbc之操作BLOB类型字段
jdbc之操作BLOB类型字段
|
Java 数据库连接 数据库
使用JDBC(Dbutils工具包)来从数据库拿取map类型数据来动态生成insert语句
前言: 大家在使用JDBC来连接数据库时,我们通过Dbutils工具来拿取数据库中的数据,可以使用new BeanListHandler<>(所映射的实体类.class),这样得到的数据,不知道表的字段名字,我们在往数据库里添加时,需要自己来挨个写字段,非常麻烦! 于是,小编想到通过MapListHandler(),结果集为一个List<Map<String, Object>>,map中key为数据库字段名字,value为对应的值,这样就可以实现insert语句动态拼接了!!
223 3
|
Java 数据库连接
JDBC学习(七):操作Blob类型数据
JDBC学习(七):操作Blob类型数据
127 0
|
Oracle Java 关系型数据库
JDBC获取数据库列名-关于 ResultSet 对象中列的类型和属性信息
JDBC获取数据库列名-关于 ResultSet 对象中列的类型和属性信息
196 0
|
Java 数据库连接 数据库
数据库类型与JDBC TYPE 和Java类型对应关系
数据库类型与JDBC TYPE 和Java类型对应关系
|
SQL Java 数据库连接
|
存储 关系型数据库 MySQL
JDBC添加图片(Blob)类型的数据
学习记录:添加图片(Blob)类型的数据