各位请帮忙?关于无效的游标状态 在这一句 rs=Opdb.getRs();执行后,可能 rs 已经为空,所以他会报无效的游标状态。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ^_^,rs=Opdb.getRs();//这句处理不好,如果查询集是空的,就可能会报错 我做了判断if(rs==null){ out.println("Err"); return;}但没有返回那个错误应该不是空的吧 try { Opdb.setSql("Select distinct Department From MenuTree"); rs=Opdb.getRs(); if(rs!=null && rs.next()) { while(rs.next()){ out.println(rs.getString("Department")+"<br>"); } }} catch(e) { System.out.println(e.toString());}试一下 实际上就是SQL 语句我加了一个distinct就报那个错误不加Distinct完全正常 你在SQL中运行你的那条语句有结果吗?如果没有结果,那肯定报错,如果有,那么问题就不是这里。 所有的一切都正常,就是加入distinct 就不行或者加入group by xxx 也不行而在数据库中能执行相应的语句,是不是ODBC驱动的问题? 我刚试了,odbc可以的如果只是查询应该没有问题 应该是你贴出来,别人才好调试表为sutot ----------- 121package sqltest;import java.sql.*;import java.util.*;public class SqlTest{ Connection conn; Statement stat; PreparedStatement pstat; String user = "sa"; String password = "sjx"; String driver = "sun.jdbc.odbc.JdbcOdbcDriver"; String url = "jdbc:odbc:sun"; public SqlTest(){ try{ Class.forName(driver); conn = DriverManager.getConnection(url,user,password); stat = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); } catch(ClassNotFoundException e){ System.out.println("驱动加载错误"); e.printStackTrace(); } catch(SQLException e){ e.printStackTrace(); } } public ResultSet getRs(String sql){ ResultSet res = null; try{ res = stat.executeQuery(sql); } catch(SQLException e) { e.printStackTrace(); } return res; } public static void main(String []args) { try{ SqlTest sqltest = new SqlTest(); ResultSet rs = sqltest.getRs("select distinct tot tot from su"); while(rs.next()){ System.out.println(rs.getString("tot")); } } catch(Exception e) { e.printStackTrace(); } } } 一般来说,rs还没rs.next的时候你如果取数的话就可能出现改问题 如何用js做密码显示明文功能 在启动tomcat时,报错了!这是什么错??? showModelessDialog的刷新问题 有懂cewolf的吗,很简单的问题 访问速度问题 求jsp and java电子版入门教程 在用jdk+resin时为什么运行是现显出来的是我的程序代码? 服务器已经配置好,客户端怎样配置才能运行服务器上的程序?马上送分。 谁知道如何在jsp中调用一个控制台程序? 如何在表单中调用选择时间(年月日)的控件,请高手赐教? hibernate.cfg.xml 文件部署到 Tomcat 上的问题?? 熟悉jspsmartupload的朋友帮忙啊
rs=Opdb.getRs();//这句处理不好,如果查询集是空的,就可能会报错
if(rs==null){
out.println("Err");
return;
}
但没有返回那个错误
应该不是空的吧
Opdb.setSql("Select distinct Department From MenuTree");
rs=Opdb.getRs();
if(rs!=null && rs.next()) {
while(rs.next()){
out.println(rs.getString("Department")+"<br>");
}
}
} catch(e) {
System.out.println(e.toString());
}
试一下
SQL 语句我加了一个distinct就报那个错误
不加Distinct完全正常
就是加入distinct 就不行
或者加入
group by xxx 也不行
而在数据库中能执行相应的语句,
是不是ODBC驱动的问题?
-----------
1
2
1
package sqltest;import java.sql.*;
import java.util.*;
public class SqlTest
{
Connection conn;
Statement stat;
PreparedStatement pstat;
String user = "sa";
String password = "sjx";
String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
String url = "jdbc:odbc:sun"; public SqlTest(){
try{
Class.forName(driver);
conn = DriverManager.getConnection(url,user,password);
stat = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
}
catch(ClassNotFoundException e){
System.out.println("驱动加载错误");
e.printStackTrace();
}
catch(SQLException e){
e.printStackTrace();
}
}
public ResultSet getRs(String sql){
ResultSet res = null;
try{
res = stat.executeQuery(sql);
}
catch(SQLException e)
{
e.printStackTrace();
}
return res;
}
public static void main(String []args)
{
try{
SqlTest sqltest = new SqlTest();
ResultSet rs = sqltest.getRs("select distinct tot tot from su");
while(rs.next()){
System.out.println(rs.getString("tot"));
} }
catch(Exception e)
{
e.printStackTrace();
}
}
}