« | August 2025 | » | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | | | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | | | | | | | |
| 公告 |
戒除浮躁,读好书,交益友 |
Blog信息 |
blog名称:邢红瑞的blog 日志总数:523 评论数量:1142 留言数量:0 访问次数:9694839 建立时间:2004年12月20日 |

| |
[java语言]使用jdbc写入oracle的blob与clob字段 原创空间
邢红瑞 发表于 2005/4/26 9:24:45 |
很多人问我不使用spring,如何存取oracle的blob与clob字段,其实这样的例子很多的,只是大家没有仔细的寻找,我顺手写了存spring的imagedb的例子。
package jdbc;
import java.sql.PreparedStatement;import java.sql.DriverManager;import java.sql.SQLException;import java.sql.Connection;import java.sql.ResultSet;import java.sql.Blob;import java.io.OutputStream;import java.sql.Statement;import java.io.File;import java.io.InputStream;import java.io.FileInputStream;import java.sql.Clob;import java.io.Writer;import org.springframework.util.FileCopyUtils;
public class testLob { // Create connection object. static Connection conn = null; public testLob() { }
public static void insertdata() { PreparedStatement pstmt = null;
try { conn.setAutoCommit(false); pstmt = conn.prepareStatement( "INSERT INTO IMAGEDB VALUES(? , EMPTY_BLOB() , EMPTY_CLOB())"); pstmt.setString(1, "rose"); pstmt.executeUpdate(); // Execute SQL statement
pstmt = conn.prepareStatement( "SELECT CONTENT ,DESCRIPTION FROM IMAGEDB WHERE IMAGE_NAME = 'rose' FOR UPDATE"); ResultSet lobrs = pstmt.executeQuery(); lobrs.next(); Blob conblob = lobrs.getBlob(1); File imgFile = new File("d:\\1.jpg"); InputStream imgFileStream = new FileInputStream(imgFile); OutputStream blobOutputStream = ((oracle.sql.BLOB) conblob). getBinaryOutputStream();
FileCopyUtils.copy(imgFileStream, blobOutputStream); imgFileStream.close(); blobOutputStream.close(); // StringBuffer sb = new StringBuffer(); for (int i = 0; i < 1024; i++) { sb.append("唉"); } // Get the Clob locator and open an output stream for the Clob Clob descClob = lobrs.getClob(2);
Writer clobWriter = ((oracle.sql.CLOB) descClob). getCharacterOutputStream();
clobWriter.write(sb.toString()); clobWriter.close(); conn.commit(); conn.setAutoCommit(true); } catch (Exception e) { e.printStackTrace(); } finally { try { pstmt.close(); // Close PreparedStatement
} catch (SQLException ex) { ex.printStackTrace(); } } }
/* * Method that gets database connection and returns the same. */ public static void getConnection() throws SQLException { // Load Oracle driver. DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
try { // Connect to the database. conn = DriverManager.getConnection( "jdbc:oracle:thin:@localhost:mydb", "scott", "tiger"); } catch (SQLException sqlex) { System.out.println("SQLException while getting db connection: " + sqlex); if (conn != null) { conn.close(); } } catch (Exception ex) { System.out.println("Exception while getting db connection: " + ex); if (conn != null) { conn.close(); } } }
public static void main(String[] args) { try { getConnection(); insertdata();
} catch (Exception e) { e.printStackTrace(); } }
}其中使用org.springframework.util.FileCopyUtils类操作输入输出流,我是spring的拥护者嘛。 |
|
回复:使用jdbc写入oracle的blob与clob字段 原创空间
邢红瑞发表评论于2005/8/3 15:22:43 |
|
回复:使用jdbc写入oracle的blob与clob字段 原创空间
三四三(游客|61.170.147.252)发表评论于2005/8/3 14:18:43 |
利用上面的代码不能删除Blob,但是在PL/SQL就可以删除,这是什么回事? |
|
回复:使用jdbc写入oracle的blob与clob字段 原创空间
三四三(游客|61.170.147.252)发表评论于2005/8/3 14:16:03 |
那如何删除BLOB数据呢?
stmt.executeUpdate("UPDATE tb_blob_file SET detail=EMPTY_BLOB() WHERE filename='"+infile+"'"); stmt.executeUpdate("delete tb_blob_file where filename='"+infile+"'"); |
|
» 1 »
|