Java servlet提供createSQLException

Java servlet提供createSQLException,java,servlets,jdbc,Java,Servlets,Jdbc,在netbeans浏览器中执行时,我有以下代码显示空白屏幕,无法移动到目标页面 import java.io.*; import java.net.*; import java.sql.*; import javax.servlet.*; import javax.servlet.http.*; public class SignIn extends HttpServlet { public void init(ServletConfig config) throws Servl

在netbeans浏览器中执行时,我有以下代码显示空白屏幕,无法移动到目标页面

import java.io.*;
import java.net.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class SignIn extends HttpServlet {



    public void init(ServletConfig config) throws ServletException {
        super.init(config);
       System.out.println("Signin Init");

    }

        public void destroy() {   }

       protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
    System.out.println("Signin process");

        System.out.println("name="+request.getParameter("uname"));
        System.out.println("Password="+request.getParameter("pwd"));

       name=request.getParameter("uname");
       password=request.getParameter("pwd");
       System.out.println("name="+name);
     System.out.println("Password="+password);
       //code here for the validating of the user and if validated send them to the
       //myAccoutn.jsp
       //else send to the accountError.jsp

    try{   
         Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
         Connection con=DriverManager.getConnection("jdbc:odbc:ERP");
         st=con.createStatement();
         System.out.println("---------------------in ConnectDB/n");
         System.out.println("-----------------before connect");
         System.out.println("-----------------after connect..."+con);
         System.out.println("-----------------create statemet");
         rs=st.executeQuery("select * from erplogin where name='"+name+"' and password='"+password+"'");
         System.out.println("-----------------qry exec");
         if(rs.next()){
        System.out.println("-----------------in If");
        int auth = rs.getInt("name");
System.out.println("-----------------getting auth"+auth);
       // session hass been created     
       session=request.getSession();
       session.setAttribute("uname", name);
       session.setAttribute("pwd",password);
       session.setAttribute("auth",new Integer(auth));

        /* TODO output your page here */
        response.sendRedirect("./MyAccount.jsp");

    }
else
      response.sendRedirect("./error/accountError.jsp");

    }catch(Exception e){
        e.printStackTrace();
    }


    }

            protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    System.out.println("Signin doGet");

        processRequest(request, response);
    }

          protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
      System.out.println("Signin doPost");

        processRequest(request, response);
    }

          public String getServletInfo() {
        return "User login";
    }
    private String name="";
    private String password="";
    HttpSession session;
    private boolean boolVal;
    private Statement st;
    private ResultSet rs=null;
    private Connection conObj;
    private static int errorVal=0;

}
它给出了以下异常执行

Signin Init
Signin doPost
Signin process
name=aaa
Password=sss
name=aaa
Password=sss
---------------------in ConnectDB/n
-----------------before connect
-----------------after connect...sun.jdbc.odbc.JdbcOdbcConnection@4260ab
-----------------create statemet
-----------------qry exec
-----------------in If
    at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114)
at sun.jdbc.odbc.JdbcOdbc.SQLGetDataInteger(JdbcOdbc.java:3811)
at sun.jdbc.odbc.JdbcOdbcResultSet.getDataInteger(JdbcOdbcResultSet.java:5638)
at sun.jdbc.odbc.JdbcOdbcResultSet.getInt(JdbcOdbcResultSet.java:583)
at sun.jdbc.odbc.JdbcOdbcResultSet.getInt(JdbcOdbcResultSet.java:601)
at SignIn.processRequest(SignIn.java:61)
at SignIn.doPost(SignIn.java:102)
排队

int auth = rs.getInt("name");


请帮助我解决这些错误

java.sql.SQLException:[Microsoft][ODBC驱动程序管理器]读取索引不正确的结果集
rs
时,会获得无效的描述符索引

    int auth = rs.getInt(3);

尝试使用正确的索引,列索引从
1
开始,依此类推。可能
3
没有列的索引。

您应该使用列名来获取数据,而不是直接使用索引。例如:假设在索引0处的第一个列名为'studentId',那么您可以通过使用int id=rs.getInt(0)得到正确的答案;但是稍后您的studentId列更改为索引号2。然后,当您访问int id=rs.getInt(0)时,您将得到错误的结果或错误。因此,在rs.get()中使用列名是安全的。例如:rs.getInt(“studentId”)。这意味着即使您的列名studentId更改为任何索引,您可以正确地访问数据。

以及如何从sun.jdbc.odbc.jdbodbc.createSQLException(jdbodbc.java:6957)和sun.jdbc.odbc.jdbodbc.standardError(jdbodbc.java:7114)中取出sun.jdbc.odbc.jdbodbc.SQLGetDataInteger(jdbodbc.java:3811)它解决了描述符无效的问题,但仍然是sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114)sun.jdbc.odbc.JdbcOdbc.SQLGetDataInteger(JdbcOdbc.java:3811),位于int auth=rs.getInt(“名称”);处理请求(请求、响应);在这行中,您的列名“name”类型是int类型?请检查表中“name”列的数据。如果列“name”中存在字符串,则会出现错误:例如:如果列“name”中的数据是“david”,则您不能使用rs.getInt(“name”)调用此数据,您必须使用rs.getString(“name”)。@Maddy,您的问题已解决?请告诉我您的列名的数据类型?问题已解决,但在登录时遇到另一个问题如果成功,则myaccount.jsp应打开,但accounterror.jsp已打开。不知道为什么如果语句变为false并将控件移到其他位置block@Maddy,您应该在if块中进行调试。
    int auth = rs.getInt(3);