我是一个servlet的初学者,之前用model 1 模式将所有代码放在一个文件里时连接、操作数据库都正常!可是现在对数据库的操作单独写在UserBeanC文件里面就不能通过了!!!进过我在三检查,try、catch发出就是 rs=ps.executeQuery("select top 1 password from [dbo].[user] where userId='"+u+"'");这句话有错但我完全不知道错在哪里!我甚至在sql server里面运行该语句都能查询通过,求大家帮我看看吧!!!(补充说明:我用的数据库是sql server 2008,操作系统win7)
package com.liz;
import java.sql.*;
public class UserBeanCl
{
private Connection ct=null;
private Statement ps=null;
private ResultSet rs=null;public boolean checkUser(String u,String p)
{
boolean b=false;
try {
ConnDB cd=new ConnDB();
try {
cd.getConn();
}
catch (Exception ex) {
System.out.println("没有连接");
}try {
rs=ps.executeQuery("select top 1 password from [dbo].[user] where userId='"+u+"'");}
catch (Exception ex) {
System.out.println("此处出错!!!");
} if(rs.next())
{
String dbpasswd=rs.getString(1);
if(dbpasswd.equals(p))
{
b=true;
}
}}
catch (Exception ex) {
ex.printStackTrace();
} return b;
} }

解决方案 »

  1.   

    你这个习惯不好,导致看不到真实的出错信息,请把:
      System.out.println("此处出错!!!");
    修改为:
      System.out.println("此处出错!!!");
      ex.printStackTrace();
    然后把错误内容弄出来大家看看。
      

  2.   

    错误显示是java.lang.NullPointerException
    at com.liz.java.UserBeabCl.checkUser<UserBeanCl.java: 30>,我之所以先前那么写是想在控制台上找出具体是哪一行错了,找到发现就是rs=ps.executeQuery("select top 1 password from [dbo].[user] where userId='"+u+"'")有问题,但又不知道是怎么回事?
      

  3.   

    NullPointerException 空指针错误UserBeanCl.java: 30 就是你说的rs=ps.executeQuery( 这行么?如果是的话,说明ps这个变量没有初始化,也就是 ps == null
      

  4.   

    很明显么jdbc的步骤你得遵循啊,你获取连接之后要createStatement 才可以啊 ,显示空指针异常肯定是你使用了值为null的引用了!
    try {
    ps=cd.createStatement();//cd就是你上面获取的jdb连接 也就是Connection对象
    rs=ps.executeQuery("select top 1 password from [dbo].[user] where userId='"+u+"'");}
    catch (Exception ex) {
    System.out.println("此处出错!!!");
    }