各位高手,我想向oracle中插入clob,我的代码如下:
public static void clobInsert(Connection conn, String infile) throws Exception
{
String strTemp = "";for(int i=0;i<1000;i++)strTemp+=i;
oracle.jdbc.driver.OraclePreparedStatement pstmt = null;
oracle.jdbc.driver.OracleResultSet rs = null;
String query = ""; conn.setAutoCommit(false);
query = "insert into test(id,content) values(?,empty_clob())";
pstmt = (oracle.jdbc.driver.OraclePreparedStatement)conn.prepareStatement(query);
pstmt.setInt(1,1);
pstmt.executeUpdate();
pstmt = null;
query = "select content from test where id = 1 for update";
pstmt =(oracle.jdbc.driver.OraclePreparedStatement)conn.prepareStatement(query);
rs= (oracle.jdbc.driver.OracleResultSet)pstmt.executeQuery(); oracle.sql.CLOB clobtt = null;
if(rs.next()){
clobtt = (oracle.sql.CLOB)rs.getClob(1);
}
Writer wr = clobtt.getCharacterOutputStream();
wr.write(strTemp);
wr.flush();
wr.close();
rs.close();
conn.commit();
}驱动:oracle10g的jdbc14
出现错误 java.io.IOException: Io 异常: End of TNS data channel
我在网上查了好久了,都是这样说的。
public static void clobInsert(Connection conn, String infile) throws Exception
{
String strTemp = "";for(int i=0;i<1000;i++)strTemp+=i;
oracle.jdbc.driver.OraclePreparedStatement pstmt = null;
oracle.jdbc.driver.OracleResultSet rs = null;
String query = ""; conn.setAutoCommit(false);
query = "insert into test(id,content) values(?,empty_clob())";
pstmt = (oracle.jdbc.driver.OraclePreparedStatement)conn.prepareStatement(query);
pstmt.setInt(1,1);
pstmt.executeUpdate();
pstmt = null;
query = "select content from test where id = 1 for update";
pstmt =(oracle.jdbc.driver.OraclePreparedStatement)conn.prepareStatement(query);
rs= (oracle.jdbc.driver.OracleResultSet)pstmt.executeQuery(); oracle.sql.CLOB clobtt = null;
if(rs.next()){
clobtt = (oracle.sql.CLOB)rs.getClob(1);
}
Writer wr = clobtt.getCharacterOutputStream();
wr.write(strTemp);
wr.flush();
wr.close();
rs.close();
conn.commit();
}驱动:oracle10g的jdbc14
出现错误 java.io.IOException: Io 异常: End of TNS data channel
我在网上查了好久了,都是这样说的。
try {
/* 插入一个空的CLOB对象 */
stmt.executeUpdate("INSERT INTO TEST_CLOB VALUES ('111', EMPTY_CLOB())");
/* 查询此CLOB对象并锁定 */
ResultSet rs = stmt.executeQuery("SELECT CLOBCOL FROM TEST_CLOB WHERE ID='111' FOR UPDATE");
while (rs.next()) {
/* 取出此CLOB对象 */
oracle.sql.CLOB clob = (oracle.sql.CLOB)rs.getClob("CLOBCOL");
/* 向CLOB对象中写入数据 */
BufferedWriter out = new BufferedWriter(clob.getCharacterOutputStream());
BufferedReader in = new BufferedReader(new FileReader(infile));
int c;
while ((c=in.read())!=-1) {
out.write(c);
}
in.close();
out.close();
}
/* 正式提交 */
conn.commit();
} catch (Exception ex) {
/* 出错回滚 */
conn.rollback();
throw ex;
}
+" values('"+contentid+"',sysdate,'"+articleName+"','"+description+"','"+author+"','1','"+catalogid+"','0',EMPTY_CLOB())";
stmt.executeUpdate(sql);//建立文章内容
sql="select content from site_content where id='"+contentid+"' FOR UPDATE";//将内容写CLOB字段
rs=stmt.executeQuery(sql);
if(rs.next()){
oracle.sql.CLOB clob = (oracle.sql.CLOB)rs.getClob("content");
//java.io.OutputStream os =clob.getAsciiOutputStream();
//byte[] data = content.getBytes("ASCII");
BufferedWriter os = new BufferedWriter(clob.getCharacterOutputStream());
char[] data=content.toCharArray();
os.write(data);
os.flush();
}
这是一段写的代码,最一个字段就是clob型的,你看看吧