【Java/Oracle】将连续文件写入Blob字段

表:

create table msx0504(
    id number(12),
    filename nvarchar2(20),
    content blob,
    primary key(id)
);

代码:

复制代码
package com.hy.lab.blob2;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;

public class ContinuousBlobWriter {
    //-- 以下为连接Oracle数据库的四大参数
    private static final String DRIVER = "oracle.jdbc.driver.OracleDriver";
    private static final String URL = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";
    private static final String USER = "luna";
    private static final String PSWD = "1234";

    public static void main(String[] args){
        Connection conn = null;
        PreparedStatement pstmt = null;

        try {
            Class.forName(DRIVER);
            conn = DriverManager.getConnection(URL, USER, PSWD);

            String insertSql="insert into msx0504(id,filename,content) values(?,?,?)";
            pstmt = conn.prepareStatement(insertSql);

            File dir=new File("C:\\temp1\\msx_src_26");
            File[] files=dir.listFiles();
            int idx=0;
            for(File file:files){
                InputStream is=new FileInputStream(file.getPath());
                pstmt.setLong(1,idx);
                pstmt.setString(2,file.getName());
                pstmt.setBlob(3,is);
                pstmt.executeUpdate();
                System.out.println("写入文件"+file.getName());
                idx++;
            }

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                pstmt.close();
                conn.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}
复制代码

查询结果:

复制代码
SQL> select id,filename,length(content) as len from msx0504;

        ID FILENAME                                        LEN
---------- ---------------------------------------- ----------
         0 1.jpg                                        230161
         1 10.jpg                                       211711
         2 11.jpg                                       310264
         3 12.jpg                                       242226
         4 13.jpg                                       194538
         5 14.jpg                                       225705
         6 15.jpg                                       218547
         7 16.jpg                                       196176
         8 17.jpg                                       227857
         9 18.jpg                                       211692
        10 19.jpg                                       142678

        ID FILENAME                                        LEN
---------- ---------------------------------------- ----------
        11 2.jpg                                        212361
        12 20.jpg                                       195689
        13 21.jpg                                       160843
        14 22.jpg                                       221536
        15 23.jpg                                       187784
        16 24.jpg                                       211107
        17 25.jpg                                       178949
        18 26.jpg                                       166578
        19 3.jpg                                        201039
        20 4.jpg                                        248252
        21 5.jpg                                        189575

        ID FILENAME                                        LEN
---------- ---------------------------------------- ----------
        22 6.jpg                                        279448
        23 7.jpg                                        198189
        24 8.jpg                                        199466
        25 9.jpg                                        211237

已选择26行。
复制代码

END

posted @   逆火狂飙  阅读(146)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2020-05-04 Agumaster点个按钮后台刷新前台一步步出状态
2020-05-04 Html中让输入框input和紧接在后的按钮button在垂直方向上对齐
2020-05-04 Java里一个线程两次调用start()方法会出现什么情况
2018-05-04 【nodejs】理想论坛帖子下载爬虫1.08
2014-05-04 【Canvas与艺术】绘制铜质蓝底五周年(Five Years Anniversary)徽章
生当作人杰 死亦为鬼雄 至今思项羽 不肯过江东
点击右上角即可分享
微信分享提示