环境为jsp+tomcat5.0+oracle9i,在登陆页面输入uid和pwd后,提交后报错
java.lang.NullPointerException
org.apache.jsp.logon_jsp._jspService(logon_jsp.java:78)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)应该是下面代码有错,感觉是String sql="select * from admin.custom where uid='"+uid+"' and pwd='"+pwd+"'";有问题,uid是数字不报错,但查不了数据库,uid是字母报错  ,  请高手看一下,
<jsp:useBean id="db" scope="page" class="opendb.opendb"/>
<%
//读取提交的表单内容
String uid=request.getParameter("uid");
String pwd=request.getParameter("pwd");//生成查询的sql语句
String sql="select * from admin.custom where uid='"+uid+"' and pwd='"+pwd+"'";
//rs为返回结果的ResultSet对象
ResultSet rs=db.executeQuery(sql);
if(rs.next())
{
//用户ID及密码输入正确的情况
rs.close();
session.putValue("uid",uid);
%>
欢迎您<%=uid%>
<%}
else{
//输入错误的情况
rs.close();
%>
对不起!您的输入有误,请重新填写!

解决方案 »

  1.   

    你的uid和pwd在数据库中是什么类型??如果不是字符串类型的话,你那个sql语句就有问题,必须类型一致
      

  2.   

    String sql="select * from admin.custom where uid='"+uid+"' and pwd='"+pwd+"'";
    这个可以把admin.去掉....
    if(rs.next()) 换成
    if(rs!=null&&rs.next())
      

  3.   

    还是不行,比如我的uid输入wu123,pwd输入123,报错空值,但若uid输入12,pwd输入123,不报错,但查不了数据库.uid和pwd在数据库中类型都为char,换成varchar也不行
      

  4.   

    package opendb;
    import java.sql.*;
    public class opendb
    {
    //定义数据库连接字符串
    String sDBDriver="oracle.jdbc.driver.OracleDriver";
    String sConnStr="jdbc:oracle:thin:@192.168.0.54:1521:myora";
    Connection conn=null;
    ResultSet rs=null;
    //定义打开数据库连接的函数
    public opendb()
    {
    try{
    Class.forName(sDBDriver).newInstance();}
    catch(java.lang.ClassNotFoundException e){
    System.err.println("opendb():"+e.getMessage());}
           catch(java.lang.InstantiationException e){
    System.err.println("opendb():"+e.getMessage());}
           catch(java.lang.IllegalAccessException e){
    System.err.println("opendb():"+e.getMessage());}
            
    }
    //定义执行sql语句的函数
    public ResultSet executeQuery(String sql)
    {
    rs=null;
    try
    {
    conn=DriverManager.getConnection(sConnStr,"sde","123");
                Statement stmt=conn.createStatement();
    rs=stmt.executeQuery(sql);
    }
    //处理异常
    catch(SQLException ex){
    System.err.println("aq.executeQuery:"+ex.getMessage());}
    return rs;
    }
    }
    这是代码,很郁闷
      

  5.   

    试了一下把String sql="select * from admin.custom where uid='"+uid+"' and pwd='"+pwd+"'";改为String sql="select uid,pwd from admin.custom ";就ok了,但为什么呢,