幾個數據庫類型的插入總結

在ORACLE中,CLOB爲插入大文本類型,BLOB爲大型的二進制類型,CLOB和BLOB類型插入數據的時候都要預先插入空字段,然後再選擇出來升級,過程中將AUTOCOMMIT SET爲FALSE,兩種語言都不會涉及中文問題,如果用PL-SQL查看數據庫裏面的是亂碼,說明數據庫在插入前已經是錯誤,如果裏面沒亂碼,在拿出來以後纔有亂碼,說明取數據的程序出錯。
下面是我自己寫的一個插入CLOB的方法:
public void clobInsert(String infile)
{
/* 設定不自動提交 */
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
String url="jdbc:oracle:thin:@10.0.128.36:1521:ora9i";
Connection conn=DriverManager.getConnection(url,"base_gov","11");
boolean defaultCommit = conn.getAutoCommit();
conn.setAutoCommit(false);
/* 插入一個空的CLOB對象 */
String strQSL="INSERT INTO TEST (CONTENT) VALUES (EMPTY_CLOB())";
PreparedStatement stmt=conn.prepareStatement(strQSL);
stmt.executeUpdate();
/* 查詢此CLOB對象並鎖定 */
ResultSet rs = stmt.executeQuery("SELECT CONTENT FROM TEST FOR UPDATE");
while (rs.next()) {
/* 取出此CLOB對象 */
oracle.sql.CLOB clob =(oracle.sql.CLOB)rs.getClob("CONTENT");
/* 向CLOB對象中寫入數據 */
BufferedWriter out = new BufferedWriter(clob.getCharacterOutputStream());
String ad=this.htmlToBlob(infile);
//下面的讀取來遠數據可以是任意的READER,只要修改READER,其它地方都不用改
StringReader in=new StringReader(ad);
int c;
while ((c=in.read())!=-1) {
out.write(c);
}
in.close();
out.close();
}
/* 正式提交 */
conn.commit();
} catch (Exception ex) {
/* 出錯回滾 */
ex.printStackTrace();
}
}
PS:在操作大型數據的時候,要注意保持數據的一致,使用什麼方法插入數據,就使用什麼方法來讀取數據,使用CLOB的好處是,它能被做爲挑揀查詢,例如:LIKE後面跟CLOB
在MSSQL中與ORACLE相類似的類型是TEXT類型,它也是一種存儲大型文本文件的類型,沒有固定的長度,
但是插入MSSQL的方法和ORACLE的不同,不需要插入空值,直接將文本變成STRING,用PREPAREDSTATEMENT中的SETOBJECT或者是SETSTRING方法來插入就可以。
在ORACLE中插入LONG RAW類型的時候,使用的是BINARYSTREAM方法來插入,用LONG RAW類型是他可以存儲任意類型的文件。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章