`

【java】java读取图像文件存入oracle中blob字段源代码

 
阅读更多
最近因为要做点东西很少写文章了。
尤其是技术类的文章。
在网上看了很多关于Java对blob字段的操作。
自己也尝试着写了个,
自己也修改了部分。
代码写得很乱。

数据库:oracle 10G  XE
数据源驱动:jdbc12.jar
文件名:WriteBlob
数据库中建立一个为clobtest的表,内有两个字段,name (varchar2(20)),content(blob)。


package dbdriver;

/**
 * 2008-09-28
 * @author duduli
 * email: lxyzj2000@gmail.com
 */
import java.sql.*;
import java.io.*;
import oracle.sql.*;

public class WriteBlob {

    public static void main(String[] args) {
        try {
            String fName2 = "";
            String fileName = "E:\\jianxin.bmp";
//E盘下游个jianxin.bmp的图像文件
            File f = new File(fileName);
            String fName = f.getName();  
            int i = fName.lastIndexOf('.');   
            if (i > 0 && i < fName.length()-1){   
                   fName2 = fName.substring(0,i);   
                }   
            System.out.println(fName2);
//获得文件名,出去后缀的文件名。
            DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
            Connection conn = DriverManager.getConnection( "jdbc:oracle:thin:@localhost:1521:XE", "system", "duduli   ");
            conn.setAutoCommit(false);
            BLOB blob = null;
            PreparedStatement pstmt = conn.prepareStatement("insert into blobtest(name,content) values(?,empty_blob())");
            pstmt.setString(1, fName2);
            pstmt.executeUpdate();
            pstmt.close();
            pstmt = conn.prepareStatement("select content from blobtest where name= ? for update");
            pstmt.setString(1, fName2);
            ResultSet rset = pstmt.executeQuery();
            if (rset.next()) {
                blob = (BLOB) rset.getBlob(1);
            }

            FileInputStream fin = new FileInputStream(f);
            System.out.println("file size = " + fin.available());
            pstmt = conn.prepareStatement("update blobtest set content=? where name=?");
            OutputStream out = blob.getBinaryOutputStream();
            byte[] data = new byte[(int) fin.available()];
            fin.read(data);
            out.write(data);
            fin.close();
            out.close();
            pstmt.setBlob(1, blob);
            pstmt.setString(2, fName2);
            pstmt.executeUpdate();
            pstmt.close();
            conn.commit();
            conn.close();
                } catch (SQLException e) {
                    System.err.println(e.getMessage());
                    e.printStackTrace();
                } catch (IOException e) {
                    System.err.println(e.getMessage());
                }
    }
}
分享到:
评论

相关推荐

    oracle触发器实现二维码

    "loadjava"标签可能指的是使用Oracle的LOADJAVA工具来加载Java源代码或类文件到数据库,以便在数据库中直接运行Java代码。这使得我们能够在数据库环境中利用Java的丰富库,比如生成二维码的库。 总结起来,这个项目...

    delphi Adoquery Oracle Blob格式的文档上传与下载

    在提供的文件列表中,虽然没有源代码,但可以推测Unit1.pas可能是主程序逻辑,包含了处理Oracle Blob字段的代码。Unit1.dfm可能定义了ADOQuery和其他UI组件的布局,而Project1.dpr则是项目文件,定义了程序入口点。...

    Oracle导入导出图片及Excel(标注:没有源代码!)

    可以使用PL/SQL过程,结合UTL_FILE包读取文件系统中的图片并存入BLOB列。另外,可以使用SQL*Loader或Oracle Data Pump工具,通过控制文件指定BLOB字段的处理方式,将图片数据导入。 3. **批量导出图片**:导出...

    PB9 操作updateblob selectblob 对象

    标题中的"PB9 操作updateblob selectblob 对象"指的是在PowerBuilder 9(PB9)环境下,使用SQL语句`UPDATE BLOB`和`SELECT BLOB`来处理大数据对象,通常是指存储大文本数据或者文件内容的BLOB字段。在数据库中,BLOB...

    BMP图片保存到数据库源代码

    4. **执行SQL语句**:将转换后的二进制数据作为参数,执行SQL语句,将数据插入到数据库的BLOB字段中。 5. **关闭数据库连接**:操作完成后,记得关闭数据库连接以释放资源。 在提供的`BMPinDB`源代码中,很可能是...

    在Oracle下开发JAVA程序的问题解答.pdf

    然而,JDBC 2.0标准并不直接支持将二进制文件存入BLOB字段,这可能导致IO异常。有以下两种处理方式: 1. 使用LONG ROW类型。创建表`tb_file`,包含一个VARCHAR字段和一个LONG ROW字段。通过`PreparedStatement`的`...

    易语言SQL图片读写

    4. **图片读取**:读取图片通常涉及打开图片文件,将其内容转换成二进制流,然后存入数据库中的BLOB字段。易语言中可以使用“读文件到缓冲区”命令读取文件,再用“转换为字节集”将缓冲区内容转换为适合数据库存储...

    Ant Lob Accessor-开源

    1. **上传文件到Oracle BLOB/CLOB**:用户可以通过指定文件路径,将文件内容直接存入Oracle数据库的BLOB或CLOB字段,无需编写复杂的数据库操作代码。 2. **下载Oracle LOB到文件系统**:同样,也可以从数据库中的...

    MFC下通过ADO访问数据库,支持图片保存,用DataGrid关联显示。

    4. **处理图片字段**:在数据库中,图片通常以BLOB(Binary Large Object)类型存储。你可以使用`CByteArray`或`COleVariant`来读取和写入图片数据。例如,`CByteArray byteArr; m_recordset.GetFieldValue(...

    计算机软件-商业源码-保存WORD到数据库中pb65.zip

    根据压缩包子文件的文件名称列表,只有一个文件“保存WORD到数据库中pb65”,这可能是一个完整的源代码文件,或者是一个包含所有源代码和相关资源的主程序。通常,这样的文件可能是PowerBuilder应用程序的.pbl...

Global site tag (gtag.js) - Google Analytics