初学者的问题..关于NullPointException..在线等--

notepads 2007-05-03 02:04:55
package test;
import java.sql.*;
import testbean.beantest;
public class test
{
private int pwdcheck(String name,String Pwd)
{
int flag=0;
String pass="";
ResultSet rs=null;
beantest checkPwd=new beantest();
String strsql="select UserPwd from login where UserId='"+name+"' or UserName='"+name+"'";
rs=checkPwd.GetRs(strsql);
try
{

while (rs.next())
{
pass=rs.getString("UserPwd");
}
rs.close();

if (pass.equals(Pwd))
flag=2;//密码正确
else
flag=3;//密码错误


}


catch (SQLException e)
{
flag=0;
}
return flag;
}



public int checklogin(String name,String Pwd){
ResultSet rs=null;
int count=0;
int flag=0;
beantest namecheck=new beantest();
String strsql="select count(*) as recount from login where UserId='"+name+"' or UserName='"+name+"'";
rs=namecheck.GetRs(strsql);
try{

while(rs.next())
{
count=rs.getInt("recount");
}


rs.close();
if(count==0)
flag=1;//用户存在
else{
if(pwdcheck(name,Pwd)==2)
flag=2;//密码正确
else
flag=3;//密码不正确
}



}
catch(SQLException e){return 0;}
return flag;
}



public static void main(String args[]){
test dd=new test();
System.out.println(dd.checklogin("ss","ss"));
}

}
----------------------运行结果-----------
Exception in thread "main" java.lang.NullPointException
at test.test.checklogin<test.java:50>
at test.test.checklogin<test.java:77>
----------------------------------------该怎么改啊,,困了两天了----
...全文
342 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
wipe_tear 2007-05-05
  • 打赏
  • 举报
回复
select count(*) 以这个开头的永远会返回一行结果集
哪怕没有满足你后面where条件的一个数据库行
另外把as recount 这个去掉在看看
Kipen 2007-05-04
  • 打赏
  • 举报
回复
==========Beantest类都有问题
代码帮你整理了下,前面那个测试类,自己弄吧
感觉好乱..

package testbean;
import java.sql.*;
public class beantest
{
String driver="com.microsoft.jdbc.sqlserver.SQLSercerDriver";
String url="jdbc:microsoft:sqlserver://localhost:1433;DataBaseName=test";
String user="sa";
String pass="";
Connection Conn=null;
Statement stmt=null;
ResultSet rs=null;
public beantest()
{
DbConn();
}
private void DbConn()
{
try{
Class.forName(driver);
Conn=DriverManager.getConnection(url,user,pass);
}
catch(Exception e){

}
}




public String GetRs(String strsql)
{

try
{
stmt=Conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
rs=stmt.executeQuery(strsql);
return rs;
}
catch (SQLException e)
{
return null;
}

}
ggtspes 2007-05-04
  • 打赏
  • 举报
回复
■■国产类似tomcat的"kangaroo_web_egg"web服务器正式发布,免费且开源

在java中间件中大部分人都知道tomcat,一个开源免费的web服务器,不过今天要介绍的是一个国内自主开发的web服务器

,它的名字叫“kangaroo_web_eggkangaroo_web_egg”,同样是开源免费的,但是它所运行的不是JSP脚本语言,而是自己开发的DQM脚本语言,

其拥有自己的容器用于执行DQM动态文件,我们称之为DQM容器。DQM很类似与JSP,但是比JSP来的简单,所以如果你会JSP那么

只需要稍看DQM就会理解。
   那么这个服务器有什么特点呢?
  1、不需要配置XML文件:以前我们 使用J2EE服务器时都时常需要配置XML文件,而kangaroo_web_egg则不需要,即使使用MVC

结构时也是用动态页面进行逻辑控制。
2、完善的国际化支持:每个涉及到内容输出或读取的方法都重载了带有字符集的方法,这样就不需要再去编写麻烦的过

滤器,只需要简单的提供当前所需要使用的字符集。
  3、有条件的文件输出:BBS的web程序中经常会遇到这样一种情况,允许用户自行上传文件,而上传后的文件必须满足某

些条件才能够被访问(读取、下载),这里所指的某些条件例如只有登录用户才能够访问,或者购买了BBS主题后才能访问等

等。类似情况在其它web应用中也有很多,那该如何实现这种功能呢?以前我们都是自己写一个servlet进行有条件的文件输出

,可是这样会很麻烦,如果要支持断点续传的需要那么自己还要写上一大段程序,要完全符合HTTP协议进行文件输出那么就更

加困难了,而在kangaroo_web_egg只需要简单的使用内置方法即可。
  4、command内置对象:kangaroo_web_egg有一个全新的内置对象command,用户可以通过此对象来查看或修改服务器当前信息

,利用此对象还可以在不停服务器的情况修改服务器的某些设置,比如不中断服务的情况下软重启服务器。
  5、生成静态页面:通 有些情况下,动态页面执行后的内容会长时间不变,但是访问的人却很多,如果生成静态页面那么

就可以免去了执行动态文件和读取数据库的开销。kangaroo_web_egg内置了自动的生成静态页面的功能,只需要简单编程就可以自

动生成静态页面了。
  5、编译及隐藏源代码:kangaroo_web_egg可以关闭自动编译功能,只运行编译后的页面,同时提供了编译整个web应用及隐藏

动态页面源代码的功能。

  kangaroo_web_eggweb服务器的官方网站:kweb.go.3322.org
notepads 2007-05-04
  • 打赏
  • 举报
回复
rs=namecheck.GetRs(strsql);不管数据库中有没结果..都会返回一个大于等于0的数..所以不必考虑,,,经过思考验证rs=checkPwd.GetRs(strsql);可能返回一个空的结果集..但是应该怎么捕获..应该怎么改....我始终不能正解;;;
我把testbean.beantest贴出来;;
package testbean;
import java.sql.*;
public class beantest
{
String driver="com.microsoft.jdbc.sqlserver.SQLSercerDriver";
String url="jdbc:microsoft:sqlserver://localhost:1433;DataBaseName=test";
String user="sa";
String pass="";
Connection Conn=null;
public beantest()
{
DbConn();
}
private void DbConn()
{
try{
Class.forName(driver);
Conn=DriverManager.getConnection(url,user,pass);
}
catch(Exception e){

}
}




public String GetRs(String strsql)
{
ResultSet rs=null;
try
{
Statement stmt=Conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
rs=stmt.executeQuery(strsql);
return rs;
}
catch (SQLException e)
{
return null;
}

}
Rick_ang 2007-05-03
  • 打赏
  • 举报
回复
rs=namecheck.GetRs(strsql);
检查这个方法,看看有没有返回对象啊
notepads 2007-05-03
  • 打赏
  • 举报
回复
同样的运行结果....
Kipen 2007-05-03
  • 打赏
  • 举报
回复
把rs=checkPwd.GetRs(strsql);放到try
{===========这个括号里,看看

while (rs.next())
notepads 2007-05-03
  • 打赏
  • 举报
回复
Rick_ang(东方未名) :

---------------------------我在等你回复啊..!--------
notepads 2007-05-03
  • 打赏
  • 举报
回复
Rick_ang(东方未名) :
请问这里应该怎么改啊...感激啊.....捕获错误...?该怎么改啊..谢谢.%
Rick_ang 2007-05-03
  • 打赏
  • 举报
回复
rs=namecheck.GetRs(strsql);
try{

while(rs.next()) //这里的rs为空
Rick_ang 2007-05-03
  • 打赏
  • 举报
回复
at test.test.checklogin<test.java:50>

数啊,test.java文件的第50行,你有对象没有new过

81,090

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧