类型:转载 责任编辑:asp.net 日期:2007/05/23
热门软件下载:
我要更新的记录里包含了大字段和一般的varchar2(2000),应该如何操作呢?
我的程序这样,可以更新大字段的那个域,但是却又更新不了不是大字段的其他域了,应该怎么处理呢
public void update(Object pObj) throws SQLException {
mModel = (CClass) pObj;
oracle.sql.CLOB clob = null;
java.io.BufferedWriter clobWriter = null;
Connection mNewConn = null;
Statement mStmt = null;
ResultSet mRs = null;
PreparedStatement pstmt = null;
try {
mNewConn = (new CDB()).getConnection(false);
mStmt = mNewConn.createStatement();
mRs = mStmt.executeQuery(
"SELECT ID,Condition,Data,Program FROM "
+ mTableName + " where ID=" + mModel.getID() + " and ITEMS=" + mModel.getItems() + " for update");
if (mRs.next()) {
clob = (oracle.sql.CLOB) mRs.getClob("CONDITION");
clobWriter = new java.io.BufferedWriter(clob.getCharacterOutputStream());
clobWriter.write(mModel.getCondition());
clobWriter.close();
clob = (oracle.sql.CLOB) mRs.getClob("DATA");
clobWriter = new java.io.BufferedWriter(clob.getCharacterOutputStream());
clobWriter.write(mModel.getData());
clobWriter.close();
clob = (oracle.sql.CLOB) mRs.getClob("PROGRAM");
clobWriter = new java.io.BufferedWriter(clob.getCharacterOutputStream());
clobWriter.write(mModel.getProgram());
clobWriter.close();
}
mRs.close();
mStmt.close();
String sSQL = "update " + mTableName +
" set name=?,department=?,Content=?,Law=?,Amount=?,Forms=? where ID=? and Items=?";
pstmt = mConn.prepareStatement(sSQL);
pstmt.setString(1,mModel.getName());
pstmt.setString(2,mModel.getDepartment());
pstmt.setString(3,mModel.getNormContent());
pstmt.setString(4,mModel.getNormLaw());
pstmt.setString(5,mModel.getNormAmount());
pstmt.setString(6,mModel.getNormForms());
}
catch (SQLException ex) {
ex.printStackTrace();
throw ex;
}
catch (IOException ioe) {
ioe.printStackTrace();
}catch(javax.naming.NamingException nex)
{
nex.printStackTrace();
}
finally {
if (mRs != null)
mRs.close();
if (mStmt != null)
mStmt.close();
if (pstmt != null)
pstmt.close();
if (mNewConn != null)
mNewConn.close();
}
}
网友回答: