Oracle 使用 clob 与 blob 插入一些比较庞大的文本或者文件,JDBC 插入时 也比较简单
表结构
CREATE TABLE test_info ( user_id int NOT NULL, user_name varchar(64) NULL, email varchar(32) NULL, contentText blob not null );
java 代码
/** * 获得数据库连接 * @param url * @param username * @param passwd * @return */ public static Connection createConnection(String url, String username, String passwd) { Connection conn = null; try { DriverManager.registerDriver(new OracleDriver()); conn = DriverManager.getConnection(url, username, passwd); } catch (Exception e) { e.printStackTrace(); } return conn; } /** * 写入 blob */ public static void writeBLOB() { /** inFile path **/ String inPath = "D:/testFile/xstream/test01.jpg"; /** ========== out ========== **/ String xsoutUrl = ConfigInfo.xsoutUrl; String xsoutUsername = "testStreamUser"; String xsoutPasswd = "admin"; InputStream input = null; Connection conn = null; PreparedStatement pst = null; int userId = 1; String sqlInsert = "insert into test_info values (" + userId + ", 2, 3, ?) "; try { //输出流 input = new FileInputStream(inPath); conn = createConnection(xsoutUrl, xsoutUsername, xsoutPasswd); conn.setAutoCommit(false); pst = conn.prepareStatement(sqlInsert); pst.setBinaryStream(1, input); //插入数据 pst.executeUpdate(); //commit pst.execute("COMMIT"); } catch (Exception e) { e.printStackTrace(); }finally{ try { input.close(); pst.close(); conn.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }