有兴趣的来看看这是什么问题,不散分,解决全给 对next方法的第一次调用会将底层的游标位置放置到返回的 ResultSet结果集中的第一个数据行前,当你再执行查询,游标返回到rs1时,rs已沦落为空指针。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 事实上原因在于,这里的rs和rs1都是从同一个sm中生成的,ResultSet对象和与之相关联的Statement对象密切相关,一旦某个ResultSet对象相对应的Statement对象被修改,该ResultSet对象的句柄将沦为null,而该Statemnet对象将与新的ResultSet对象关联。 import java.sql.*;public class test{private Connection conn;private Statement sm;private ResultSet rs;private String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=CARD";private String driverName="com.microsoft.jdbc.sqlserver.SQLServerDriver";private String user="sa";private String password="kgb911"; public test(){ try { Class.forName(driverName); conn = DriverManager.getConnection(url,user,password); sm = conn.createStatemen(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); } catch (ClassNotFoundException ex) { System.err.println(ex); } catch (SQLException ex) { System.err.println(ex); } try{rs = sm.executeQuery("SELECT BEGINTIME,ENDTIME,SERVERNO FROM NETCONSUME WHERE ID=05750493");while(rs.next()){String ss = rs.getString("SERVERNO");System.out.println(ss);Statement sm1=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);ResultSet rs1 = sm1.executeQuery("SELECT NAME FROM DEPARTMENT WHERE DKEY="+"'"+ss+"'");while(rs1.next()){System.out.println(rs1.getString("NAME"));}rs1.close();sm1.close();}rs.close();sm.close();conn.close();}catch(Exception e2){ System.out.println(e2.toString());}} public static void main(String args[]){test db = new test();}} 定义两个Statement对象就可以了!!一个记录集使用一个STATEMENT对象!!当Statement的语句改变的时候,记录集的内容也会清空,他们两个是密切关联的!! 如何在回复里面嵌入java代码块 求大神,用分而治之算法写归并排序的理解 如何动态设置jtable中某一个单元格的字体颜色 随便问问 关于字节流从socket里面读数据的问题? 恳求续:java中如何实现数字的集合的排列组合,并将各个排列存放到内存中待以后处理? 求助 HashMap put方法 报错NullPointerException 这一段代码,为什么达不到我想要的要求 java是哑巴吗??在线等解答 请问Jbuilder5与AppServer如何配置?我是新手,谢谢 nextInt在JAVA里是什么东西呀,是不是取下一下整数的意思呀? 请问哈希表的做用 ?
import java.sql.*;public class test
{
private Connection conn;
private Statement sm;
private ResultSet rs;
private String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=CARD";
private String driverName="com.microsoft.jdbc.sqlserver.SQLServerDriver";
private String user="sa";
private String password="kgb911";
public test()
{
try
{
Class.forName(driverName);
conn = DriverManager.getConnection(url,user,password);
sm = conn.createStatemen(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
}
catch (ClassNotFoundException ex)
{
System.err.println(ex);
}
catch (SQLException ex)
{
System.err.println(ex);
}
try
{
rs = sm.executeQuery("SELECT BEGINTIME,ENDTIME,SERVERNO FROM NETCONSUME WHERE ID=05750493");
while(rs.next())
{
String ss = rs.getString("SERVERNO");
System.out.println(ss);
Statement sm1=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
ResultSet rs1 = sm1.executeQuery("SELECT NAME FROM DEPARTMENT WHERE DKEY="+"'"+ss+"'");
while(rs1.next())
{
System.out.println(rs1.getString("NAME"));
}
rs1.close();
sm1.close();
}
rs.close();
sm.close();
conn.close();
}
catch(Exception e2)
{
System.out.println(e2.toString());
}
}
public static void main(String args[])
{
test db = new test();
}
}
当Statement的语句改变的时候,记录集的内容也会清空,他们两个是密切关联的!!