请教高手:初学JSP,写了一个连接数据库的类,但是在JSP引用是有提示“unreported  exception  java.sql.SQLException;”(但也可以运行成功),还有如何关闭ResultSet呢?先谢谢了!
----DBMYSQLLink.java----------
package xtjc2;import java.util.*;
import java.io.*;
import java.security.MessageDigest;import java.sql.*;
import com.mysql.jdbc.Driver.*;public class DBMYSQLLink {
    private String url = "jdbc:mysql://10.17.162.159:3306/xtjc";
    private String dbuser = "xtjc";
    private String dbpass = "lcw2046";
 //发送不返回结果SQL指令方法
    public void executeSQL(String sql)throws SQLException{
        try {
            Class.forName("org.gjt.mm.mysql.Driver");
            Connection con = DriverManager.getConnection(url, dbuser, dbpass);
            Statement stmt = con.createStatement();
            stmt.executeUpdate(sql);
            con.close();
        } catch (Exception e) {
        }
    }
    //发送返回结果SQL指令方法
    public ResultSet executeSQLQY(String sql) throws SQLException{
        try {
            Class.forName("org.gjt.mm.mysql.Driver");
            Connection con = DriverManager.getConnection(url, dbuser, dbpass);
            Statement stmt = con.createStatement();
            return stmt.executeQuery(sql);
        } catch (Exception e) {
            return null;
        } finally {
        }    }}----SWITCH.jsp----------
<%@page contentType="text/html; charset=gb2312" language="java" import="java.sql.*,xtjc2.DBMYSQLLink,xtjc2.PWD" errorPage="error.jsp"%>
<%
  PWD n = new PWD(); //调用MD5密码转换类
  String passwordMD5 = n.encryptPWD(request.getParameter("password"));
  String userId = request.getParameter("userId");
  String password = passwordMD5;
  session.setAttribute("userId", userId);
  session.setAttribute("password", password);
  String sql = "select * from userlist where username='" + userId + "' and password='" + password + "'";
  DBMYSQLLink ExSql = new DBMYSQLLink();
  ResultSet rs = ExSql.executeSQLQY(sql);  if (rs.next()) { //密码正确
    Cookie cookie = new Cookie("login", userId);
    cookie.setMaxAge(365 * 24 * 60 * 60);
    response.addCookie(cookie); //写COOKIE     type为页面中读Session的一变量    session.setAttribute("youname", rs.getString("youname"));
    session.setAttribute("qx1", rs.getString("qx1"));
    session.setAttribute("qx2", rs.getString("qx2"));
    session.setAttribute("qx3", rs.getString("qx3"));
    session.setAttribute("qx4", rs.getString("qx4"));
    session.setAttribute("admin_qx", rs.getString("admin_qx"));
%>
<jsp:forward page="welcome.jsp"></jsp:forward>
<%} else { //密码错误%>
<jsp:forward page="fail.jsp"></jsp:forward>
<%}%>

解决方案 »

  1.   

    你捕获了错误,却没有处理,所以在出错的时候出现了上面的提示。
    ResultSet只要.close()就可以关闭了。
      

  2.   

    请教:nccxl(小猪的狗熊)     我网上找了找
    他人的原代码,捕获sql异常
    try{
    while(rs.next()){
    String Sname = rs.getString(1);
    String Sno = rs.getString(2);
    String Sage = rs.getString(3);
    String Ssex = rs.getString(4);
    String Sdept = rs.getString(5);
    }
    }catch(Exception e){
    System.out.println("发生SQL异常!");
    }
    请教:我如何才能在我的SQL方法里捕获异常呢,好像把捕获异常写在JSP里不太好哦。
      

  3.   

    public void executeSQL(String sql)throws SQLException{
            try {
                Class.forName("org.gjt.mm.mysql.Driver");
                Connection con = DriverManager.getConnection(url, dbuser, dbpass);
                Statement stmt = con.createStatement();
                stmt.executeUpdate(sql);
                con.close();
            } catch (Exception e) {
            }
        }
    这里不要抛出异常啊, 加到CATCH快里面去啊 。
      

  4.   

    to Nuage(无痕):还是不明白,:)   你看看我的代码麻烦你帮帮我改改,谢谢了!//发送返回结果SQL指令方法
    public ResultSet executeSQLQY(String sql) throws SQLException{
    try {
    Class.forName("org.gjt.mm.mysql.Driver");
    Connection con = DriverManager.getConnection(url, dbuser, dbpass);
    Statement stmt = con.createStatement();
    return stmt.executeQuery(sql);
    } catch (Exception e) {
    return null;
    } finally {
    }
      

  5.   

    你看你需要怎么处理异常了,一般情况是输出异常信息,但不能避免出现异常。
    你可以在catch里加输出异常信息的语句,方便你知道异常的内容。
    catch (Exception e) {
      System.out.println(e.getMessage());
    }
      

  6.   

    你现在究竟是想解决异常呢,还是想消除掉你最开始问的哪个“unreported  exception  java.sql.SQLException;”提示信息?
      

  7.   

    catch (Exception e) {
    return null;
    } 没有抛出错误都能运行哦System.out.println(e.getMessage());
      

  8.   

    Statement 也需要关闭Connection Statement 这两个东西应该放到 finally{} 里面关闭