JAVA读取、写入、更新CLOB字段_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > JAVA读取、写入、更新CLOB字段

JAVA读取、写入、更新CLOB字段

 2015/1/16 15:31:37  wallimn  程序员俱乐部  我要评论(0)
  • 摘要:/*--建表语句如下:createtablet_clob(idvarchar2(32)primarykey,clobfieldCLOB);*//***读取CLOB字段的代码示例**作者:wallimn<br/>*时间:2015-1-16<br/>*联系:wallimn@sohu.com<br/>*/publicvoidreadClob(){Connectionconn=DbManager.getInstance().getConnection();try
  • 标签:Java
class="java">
	/*
	--建表语句如下:
	create table t_clob(
			id varchar2(32) primary key,
			clobfield CLOB
			);
	 */

	/**
	 * 读取CLOB字段的代码示例
	 * 
	 * 作者:wallimn<br/>
	 * 时间:2015-1-16<br/>
	 * 联系:wallimn@sohu.com<br/>
	 */
	public void readClob() {
		Connection conn = DbManager.getInstance().getConnection();
		try {
			PreparedStatement stat = conn
					.prepareStatement("select clobfield from t_clob where id='1'");
			ResultSet rs = stat.executeQuery();
			if (rs.next()) {
				oracle.sql.CLOB clob = (oracle.sql.CLOB) rs
						.getClob("clobfield");
				String value = clob.getSubString(1, (int) clob.length());
				System.out.println("CLOB字段的值:" + value);
			}
			conn.commit();
		} catch (SQLException e) {
			e.printStackTrace();
		}

		DbManager.getInstance().closeConnection(conn);
	}

	/**
	 * 写入、更新CLOB字段的代码示例
	 * 
	 * 作者:wallimn<br/>
	 * 时间:2015-1-16<br/>
	 * 联系:wallimn@sohu.com<br/>
	 */
	public void writeClob() {
		Connection conn = DbManager.getInstance().getConnection();
		try {
			conn.setAutoCommit(false);
			// 1.这种方法写入CLOB字段可以。
			PreparedStatement stat = conn
					.prepareStatement("insert into t_clob (id,clobfield) values(sys_guid(),?)");
			String clobContent = "This is clob string";
			StringReader reader = new StringReader(clobContent);
			stat.setCharacterStream(1, reader, clobContent.length());
			stat.executeUpdate();

			// 2.使用类似的方法进行更新CLOB字段,则不能成功 
			// stat.close();
			// stat =null;
			// stat =
			// conn.prepareStatement("update t_clob set clobfield=? where id=1");
			// stat.setCharacterStream(1, reader, clobContent.length());
			// stat.executeUpdate();

			// 3.需要使用for update方法来进行更新,
			// 但是,特别需要注意,如果原来CLOB字段有值,需要使用empty_clob()将其清空。
			stat = conn
					.prepareStatement("select clobfield from t_clob where id='1' for update");
			ResultSet rs = stat.executeQuery();
			if (rs.next()) {
				oracle.sql.CLOB clob = (oracle.sql.CLOB) rs
						.getClob("clobfield");
				Writer outStream = clob.getCharacterOutputStream();
				char[] c = clobContent.toCharArray();
				outStream.write(c, 0, c.length);
				outStream.flush();
				outStream.close();
			}
			conn.commit();
		} catch (SQLException | IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		DbManager.getInstance().closeConnection(conn);

	}
发表评论
用户名: 匿名