烦了很久的问题?怎么解决?(郁闷,高手帮忙呀!)
我的类如下:我必须用CachedRowSet,我要实现断点连接;
import java.sql.SQLException;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.DriverManager;
import javax.sql.rowset.CachedRowSet;
import com.sun.rowset.CachedRowSetImpl;
public class test {
public test () {
}
public static void main(String[] args) throws SQLException {
Connection con = null;
Statement st = null;
ResultSet rst = null;
try{
//注册数据库驱动程序
Class.forName("oracle.jdbc.driver.OracleDriver");
//获取数据库连接
con = DriverManager.getConnection("jdbc:oracle:thin:@192.168.100.101:1521:test","aa","aa");
CachedRowSet crs = null;
crs = new CachedRowSetImpl();
crs.setType(ResultSet.TYPE_SCROLL_INSENSITIVE);
crs.setConcurrency(ResultSet.CONCUR_UPDATABLE);
crs.setCommand("select * from table1 where id=101");
crs.execute(con);
crs.absolute(1);
crs.deleteRow();
crs.acceptChanges(con); //该行为34行
}
catch (Exception e){
e.printStackTrace();
}
finally{
try{
//关闭连接
if (rst != null)
rst.close();
if (con != null)
con.close();
}
catch (SQLException e){
throw e;
}
}
}
}
我的表table1为
id name bk
101 aa
102 bb 你好
如果删除 id=102不出异常,
输出:
Value of params1 : {0} 102
Value of params2 : {0} bb
Value of params3 : {0} 你好
不知道我为什么输出?能不能不让输出?
但是删除id=101后出以下异常:
运行后抛出异常:
Value of params1 : {0} 101
Value of params2 : {0} aa
Value of params3 : {0} null
java.lang.NullPointerException
at com.sun.rowset.internal.CachedRowSetWriter.deleteOriginalRow(CachedRowSetWriter.java:862)
at com.sun.rowset.internal.CachedRowSetWriter.writeData(CachedRowSetWriter.java:312)
at com.sun.rowset.CachedRowSetImpl.acceptChanges(CachedRowSetImpl.java:859)
at com.sun.rowset.CachedRowSetImpl.acceptChanges(CachedRowSetImpl.java:919)
at test.main(test.java:34)
id=101 的bk一定为null;