在java 中读取 Oralce Clob类型
9116 2004-08-23 07:21:17 我先在表中插入了一个记录:
insert into webadmin.Hospital values(1,'QQQ',empty_clob(),empty_clob(),empty_clob(),'6',empty_clob(),empty_clob(),empty_clob(),empty_clob(),empty_clob(),'1',empty_clob());
然后要更新这个记录;但是不行;以下是程序代码:
public boolean Update ( String cnt , String mdu )
{
debug.log ( "getContent" , "T-0 params cnt="+cnt+";mdu="+mdu);
try
{
debug.log ( "getContent" , "T-1" );
String sql = "insert into " + skm + ".Hospital values(1,'医院',empty_clob(),empty_clob(),empty_clob(),'6',empty_clob(),empty_clob(),empty_clob(),empty_clob(),empty_clob(),'1',empty_clob())";
Statement stmt = conn.createStatement ();
//ResultSet rs = stmt.executeQuery ( sql );
debug.log ( "getContent" , "T-2" );
String sqll = "select * from "+ skm + ".Hospital where id=1 ";//for update";
ResultSet rss = stmt.executeQuery ( sqll );
debug.log ( "getContent" , "T-3" );
if ( rss.next () )
{
debug.log ( "getContent" , "T-4 Test Name="+rss.getString("Name") );
CLOB clob = ( ( OracleResultSet ) rss ).getCLOB ( "INTRODUCTION" );
clob.putString ( 1 , "ddddddddddddddddddddddddddddddddddd" );
sql = "update "+ skm + ".Hospital set INTRODUCTION=? where id=1";
debug.log ( "getContent" , "T-5" );
PreparedStatement pstmt = conn.prepareStatement ( sql );
debug.log ( "getContent" , "T-5.1" );
pstmt.setClob ( 1 , clob );
debug.log ( "getContent" , "T-5.2" );
pstmt.executeUpdate ();
debug.log ( "getContent" , "T-6" );
pstmt.close ();
return true;
}
else
{
debug.log ( "getContent" , "T-7" );
return false;
}
} catch ( SQLException ex )
{
debug.log ( "getContent" , "T-8" );
ex.printStackTrace();
return false;
}
//当执行到这句
CLOB clob = ( ( OracleResultSet ) rss ).getCLOB ( "INTRODUCTION" );
就出现错误,说未锁顶含有LOB值的行,请问是什么原因? 有哪位高手可以告诉我Clob数据是如何更新的,万分感谢。
哦,还有如果把:
String sqll = "select * from "+ skm + ".Hospital where id=1 ";//for update";
该成
String sqll = "select * from "+ skm + ".Hospital where id=1 for update";
还会有错误:错误的读取顺序;不知道是怎么回事情? 因为我是按照网上的资料写的;请高手指点哦