最近因为要做点东西很少写文章了。
尤其是技术类的文章。
在网上看了很多关于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());
}
}
}
分享到:
相关推荐
"loadjava"标签可能指的是使用Oracle的LOADJAVA工具来加载Java源代码或类文件到数据库,以便在数据库中直接运行Java代码。这使得我们能够在数据库环境中利用Java的丰富库,比如生成二维码的库。 总结起来,这个项目...
在提供的文件列表中,虽然没有源代码,但可以推测Unit1.pas可能是主程序逻辑,包含了处理Oracle Blob字段的代码。Unit1.dfm可能定义了ADOQuery和其他UI组件的布局,而Project1.dpr则是项目文件,定义了程序入口点。...
可以使用PL/SQL过程,结合UTL_FILE包读取文件系统中的图片并存入BLOB列。另外,可以使用SQL*Loader或Oracle Data Pump工具,通过控制文件指定BLOB字段的处理方式,将图片数据导入。 3. **批量导出图片**:导出...
标题中的"PB9 操作updateblob selectblob 对象"指的是在PowerBuilder 9(PB9)环境下,使用SQL语句`UPDATE BLOB`和`SELECT BLOB`来处理大数据对象,通常是指存储大文本数据或者文件内容的BLOB字段。在数据库中,BLOB...
4. **执行SQL语句**:将转换后的二进制数据作为参数,执行SQL语句,将数据插入到数据库的BLOB字段中。 5. **关闭数据库连接**:操作完成后,记得关闭数据库连接以释放资源。 在提供的`BMPinDB`源代码中,很可能是...
然而,JDBC 2.0标准并不直接支持将二进制文件存入BLOB字段,这可能导致IO异常。有以下两种处理方式: 1. 使用LONG ROW类型。创建表`tb_file`,包含一个VARCHAR字段和一个LONG ROW字段。通过`PreparedStatement`的`...
4. **图片读取**:读取图片通常涉及打开图片文件,将其内容转换成二进制流,然后存入数据库中的BLOB字段。易语言中可以使用“读文件到缓冲区”命令读取文件,再用“转换为字节集”将缓冲区内容转换为适合数据库存储...
1. **上传文件到Oracle BLOB/CLOB**:用户可以通过指定文件路径,将文件内容直接存入Oracle数据库的BLOB或CLOB字段,无需编写复杂的数据库操作代码。 2. **下载Oracle LOB到文件系统**:同样,也可以从数据库中的...
4. **处理图片字段**:在数据库中,图片通常以BLOB(Binary Large Object)类型存储。你可以使用`CByteArray`或`COleVariant`来读取和写入图片数据。例如,`CByteArray byteArr; m_recordset.GetFieldValue(...
根据压缩包子文件的文件名称列表,只有一个文件“保存WORD到数据库中pb65”,这可能是一个完整的源代码文件,或者是一个包含所有源代码和相关资源的主程序。通常,这样的文件可能是PowerBuilder应用程序的.pbl...