几个数据库类型的插入总结

在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类型是他可以存储任意类型的文件。

你可能感兴趣的:(oracle,sql,C++,c,jdbc)