tomcat dbcp连接池操作clob字段

先写一下jdbc操作clob把

Connection conn = DataBaseClass.getConnection();
oracle.sql.CLOB clob = (CLOB) conn.createClob();		   
clob.setString(1, msg);
DataBaseClass.executeUpdate(conn, "insert into testclob(ID, mclob) values(?,?)", new Object[]{2,clob});

可以直接通过Connection的createClob()方法创建一个clob对象,在通过 clob.setString(1, msg);对其进行赋值,然后直接插入即可。

但是

今天在使用tomcat自带的dbcp连接池时,

oracle.sql.CLOB clob = (CLOB) conn.createClob();并不能使用直接创建,找了很多方法,最常见的是通过下面这种方式创建clob

Clob clob = null;
			//conn.setAutoCommit(false); //* 
			String sql = "insert into testclob(ID, mclob) values(4, empty_clob())"; 
			Statement stmt = conn.createStatement(); 
			stmt.executeUpdate(sql);
			conn.commit(); //* 
			sql = "select mclob from testclob where id=4 for update"; 
			ResultSet rs = stmt.executeQuery(sql); 
			if (rs.next()){ 
				clob = (Clob)(rs).getClob(1); 
			}

但是并不能成功,还有一些方法:如oracle.sql.CLOB clob = (CLOB) ((org.apache.commons.dbcp.DelegatingResultSet)rs).getClob("CONTENT");

这些试了都不行,最后发现,把项目下的oracle驱动包删除,oracle.sql.CLOB用 java.sql.Clob代替,只在tomcat下的lib下保存oracle驱动包,即可通过上面列出的方法先插入空的clob对象,在查询获取clob对象,更改clob的数据后,在更新数据

 clob.setString(1, msg);
DataBaseClass.executeUpdate(conn, "update testclob set mclob=? where id=?", new Object[]{clob,2});


你可能感兴趣的:(tomcat,clob,DBCP连接池)