Java 我在从ResultSet rs获取输出时获得prblm(使用任何方法)

Java 我在从ResultSet rs获取输出时获得prblm(使用任何方法),java,sql,servlets,Java,Sql,Servlets,源代码: protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); String facName[] = null; int rows = 0; double scr[] = null; PrintWrit

源代码:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    processRequest(request, response);

    String facName[] = null;
    int rows = 0;
    double scr[] = null;

    PrintWriter out=response.getWriter();
    try {
        String sql;
        ResultSet rs;
        Class.forName("com.mysql.jdbc.Driver");
        Connection c1 = DriverManager.getConnection("jdbc:mysql://localhost:3306/apj", "root", "root");
        Statement s = c1.createStatement();
        sql="select * from teacherreportA";
        rs=s.executeQuery(sql); 

        rs.last();
        int len = rs.getRow();
        rs.beforeFirst();
        double score[] = new double[len];
        String facItr[] = new String[len];
        int lenCnt = 0;

       //  ****upto here it is working fine but                         
        while(rs.next()) {
            facItr[lenCnt] = rs.getString("tname");
            lenCnt++;
        }

        lenCnt = 0;
        rs.beforeFirst();
        //            rsM.close();

        while(lenCnt<len) {
            //            ResultSet rs ;
            //                 Class.forName("com.mysql.jdbc.Driver");
            //                c1=DriverManager.getConnection("jdbc:mysql://localhost:3306/apj", "root", "root");
            //   s =c1.createStatement();

            score[lenCnt]=0;
            out.println(lenCnt+" here "+len+"  ");
            int a,b,c,d;

            sql = "select * from teacherreportA where tname = \""+facItr[lenCnt]+"\"";
            out.println("  !!!  "+sql);
            rs=s.executeQuery(sql);

            try {
                // here rs.(any method) is generating error java.sql.SQLException  out.println(rs.findColumn("tname")+"***"+rs.getString("tname"));
            } catch(SQLException exp) { 
                out.println("  $$$ "+exp.toString());
            }

            a=rs.getInt(4);
            b=rs.getInt(5);
            c=rs.getInt(6);
            d=rs.getInt(7);
            score[lenCnt] += (a*100+b*75+c*50+d*25)/(a+b+c+d);
            out.println(lenCnt+"here");
            sql="select * from teacherreportB where tname = '"+facItr[lenCnt]+"'";
protectedvoiddopost(HttpServletRequest请求,HttpServletResponse响应)抛出ServletException,IOException{
processRequest(请求、响应);
字符串facName[]=null;
int行=0;
双scr[]=null;
PrintWriter out=response.getWriter();
试一试{
字符串sql;
结果集rs;
Class.forName(“com.mysql.jdbc.Driver”);
连接c1=DriverManager.getConnection(“jdbc:mysql://localhost:3306/apj“,”根“,”根“);
语句s=c1.createStatement();
sql=“从teacherreportA中选择*”;
rs=s.executeQuery(sql);
rs.last();
int len=rs.getRow();
rs.beforeFirst();
双倍分数[]=新的双倍分数[len];
String facItr[]=新字符串[len];
int lenCnt=0;
//****到目前为止,工作正常,但
while(rs.next()){
facItr[lenCnt]=rs.getString(“tname”);
lenCnt++;
}
lenCnt=0;
rs.beforeFirst();
//rsM.close();

while(lenCnt代码非常难看。我不喜欢将光标移到最后再移回来。当你用列表替换数组时,你可以完全跳过这一部分,它是自动调整大小的

这个循环真的很奇怪,因为你像在第一个查询中一样循环相同的数据

见:

默认情况下,每个语句对象只能打开一个ResultSet对象 因此,如果读取一个ResultSet对象 与另一个的读取交错,每个都必须已生成 通过不同的语句对象。语句中的所有执行方法 如果 开放的存在


SQL异常中有什么消息?它只提供了SQLException,没有提供任何其他信息
我正确获取了行数,但是我想使用“rs”对象进行新的SQL查询,但在那里出现了错误。我可以在此处添加屏幕截图吗?如果是,那么异常应如何包含消息,请附加e.getMessage()。我建议您使用PreparedStatement,而不是手动构造查询。它更安全(css)且可读性更好。我也附加了e.getMessage(),但它给了Null。让我实现您所说的…并返回否它不起作用…我尝试关闭ResultSet对象,然后关闭所有三个对象(ResultSet、Statement、Connection)然后创建所有3个新对象,但相同的问题仍然存在。你是指相同的…还是其他什么???