这段改一下!
ResultSet rs = null;
rs = sta.executeQuery(Sql);
if(rs!=null){
rs.next();
if (rs.wasNull())
{
Real_psw="Unknow User";
}
else
{
Real_psw=rs.getString("passwd");
}
}
ResultSet rs = null;
rs = sta.executeQuery(Sql);
if(rs!=null){
rs.next();
if (rs.wasNull())
{
Real_psw="Unknow User";
}
else
{
Real_psw=rs.getString("passwd");
}
}
谢谢,我该了可是还是同样的错误
谁还有什么好办法吗?
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con= DriverManager.getConnection("jdbc:odbc:erp","erpsys","erpsys");
Statement sta=con.createStatement();
ResultSet rs=sta.executeQuery(Sql);
out.println(con.isClosed());
out.println(rs);
rs.close();
con.close();
}
catch(Exception e)
{
out.println(e.getMessage());
}
错误依旧
[Microsoft][ODBC 驱动程序 管理器] 非法的游标状态
我希望实现的是一个用户登录界面,当用户不存在时查询结果为空,就是上边的语句。
谢谢!
我按照你所说的修改了程序,得到一下结果
false sun.jdbc.odbc.JdbcOdbcResultSet@20f443
这是什么?
sun.jdbc.odbc.JdbcOdbcResultSet@20f443:查询后有结果!
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con= DriverManager.getConnection("jdbc:odbc:erp","erpsys","erpsys");
Statement sta=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
ResultSet rs = null;
rs = sta.executeQuery(Sql);
if(rs!=null && rs.next())
{
Real_psw=rs.getString("passwd");
}
else
{
Real_psw="Unknow User";
}
rs.close();
con.close();
if (psw.equals(Real_psw))
{
user.Set_id(id);
out.println("Login Success");
}
else
{
response.sendRedirect("Login.html");
}
}
catch(Exception e)
{
out.println(e.getMessage());
}
rs = sta.executeQuery(Sql);
if(!rs.next())
{
System.out.println("null");
}
else
{
System.out.println("not null");
}
按照你的改动已经成功了 。
可是我还是有些不明白 (rs!=null)和 ( rs.next())难道不是等价的吗?
为什么还要这样写?rs.wasNull()又是什么呢?
rs.next()表示游标向后移一条,如果已经到了末尾,怎返回false!
rs.wasNull()是判断rs的结果是不是空(数据库),并不是判断其存在不存在!基本上就是这样!
起初作了一点点asp,然后由作了一点点jsp,接着作java,现在还做一点点设计,基本上什么都不精!
简单问题还可以应付了!
^^