插入BLOB

创建完Blob对象,如何将这个Blob对象插入到表中去呢?比如存在表TEST_BLOB,它有两个字段,第一个为ID(INT),第二个为FILE(BLOB),括号内为该字段的数据类型。我们可以有两种方法可以使用。

方法一:

			/*
			 * 先将创建的Connection对象con转化为OscarJdbc2Connection类型,
			 * 然后调用OscarJdbc2Connection中的createBlob()方法
			 */
			Blob blob = ( (OscarJdbc2Connection) con).createBlob();
			
			/*插入数据方法一*/
			sql = " INSERT INTO TEST_BLOB VALUES(?,?)";
			//创建PreparedStatement对象用来插入数据
			PreparedStatement pstmt = con.prepareStatement(sql);

			pstmt.setInt(1,1);
			pstmt.setBlob(2,blob);
			//执行,插入到表中
			pstmt.execute();
			//然后可以操作Blob对象往里面插入数据,bytes是一个byte数组
		 	byte[] bytes = new byte[200];
		 	String strInput="abcdefg";
		 	bytes= strInput.getBytes();
			blob.setBytes(1,bytes);

方法二:

			/*插入数据方法二*/
			//empty_blob()将在插入的记录中放入一个空的大对象
			sql ="INSERT INTO TEST_BLOB VALUES(2,EMPTY_BLOB())";
			//插入一条记录,stmt是已经创建了的Statement对象
			stmt.executeUpdate(sql);
			//然后可以将那个Blob大对象取出来,往里面插入数据
			sql = "SELECT * FROM TEST_BLOB WHERE ID = 2";
			ResultSet rs = stmt.executeQuery(sql);
			//取得Blob对象blob,接着就可以处理里面的数据了
			while(rs.next()){
				blob = rs.getBlob("FILE");
				blob.setBytes(1,bytes);
			}