conn.java
package javafan;
import java.sql.*;
import java.util.*;
public class conns {
 Connection conn=null;
 ResultSet rs;
String user ="sa"; 
String password ="123"; 
String sql;
 String url ="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=guestbook"; 
  public conns()  
{
try{ 
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance(); 
  System.out.println("数据库连接成功!"); } 
catch(Exception e) 

e.printStackTrace(); 
  System.out.println("数据库连接失败"); 
}
   }
  
public List executeQuery(String sql)
  {
  
      conn = DriverManager.getConnection(url, user, password);
      Statement stmt = conn.createStatement();
      rs = stmt.executeQuery(sql);
      List results = new ArrayList();
      while (rs.next())
      {
        Admin beans = new Admin();
        beans.setUserName(rs.getString("username"));
        beans.setPassword(rs.getString("password"));
        results.add(beans);
      }
      stmt.close();
      conn.close();
      System.out.println(" <br>数据库表打开!");
      return results;   
  } }Admin.java
package javafan;public class Admin {
private String userName; private String password; public String getUserName() {
return userName;
} public void setUserName(String userName) {
this.userName = userName;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
}
}报错内容:vafan\conns.java:28: unreported exception java.sql.SQLException; must be caugh
t or declared to be thrown
      conn = DriverManager.getConnection(url, user, password);
                                        ^
javafan\conns.java:29: unreported exception java.sql.SQLException; must be caugh
t or declared to be thrown
      Statement stmt = conn.createStatement();
                                           ^
javafan\conns.java:30: unreported exception java.sql.SQLException; must be caugh
t or declared to be thrown
      rs = stmt.executeQuery(sql);
                            ^
javafan\conns.java:32: unreported exception java.sql.SQLException; must be caugh
t or declared to be thrown
      while (rs.next())
                    ^
javafan\conns.java:35: unreported exception java.sql.SQLException; must be caugh
t or declared to be thrown
        beans.setUserName(rs.getString("username"));
                                      ^
javafan\conns.java:36: unreported exception java.sql.SQLException; must be caugh
t or declared to be thrown
        beans.setPassword(rs.getString("password"));
                                      ^
javafan\conns.java:39: unreported exception java.sql.SQLException; must be caugh
t or declared to be thrown
      stmt.close();
                ^
javafan\conns.java:40: unreported exception java.sql.SQLException; must be caugh
t or declared to be thrown
      conn.close();
                ^

解决方案 »

  1.   

    给你的所有方法都加上 throws Exception
      

  2.   

    public List executeQuery(String sql) Throws Exception
      {
      
          conn = DriverManager.getConnection(url, user, password);
          Statement stmt = conn.createStatement();
          rs = stmt.executeQuery(sql); 加上红色的那句话,或者把上面的三句加try{}catch(E e){}
      

  3.   

    很明显 两种方案可供选择
    must be caught or declared to be thrown
      

  4.   

    数据库操作语句要throw exception的
    要能抛出异常
      

  5.   

    异常信息,Throws Exception 或者是try catch 自己处理了
      

  6.   

    用try catch 好一点把,,你没用eclipse卡发工具吗,,他会提示的呀,,
    要你还是用记事本什么开发的话,,建议你要学开发工具了
      

  7.   

    嗯,SQLException 是检查型异常,使用时必须捕获处理掉或者抛给调用方法处理。若是继承 RuntimeException 的异常,是非检查型异常,使用时可以不用捕获。
      

  8.   

    我想知道以上的两个类有错误吗,什么原因导致的异常,在conn.java中去掉“ package javafan;”就不会出现上面的错误,不知道是为什么,请各位多多指教,如果分不够,我立刻加!!! 
      

  9.   

    谁能给我解释一下   为什么在conn.java中去掉“ package javafan;”就不会出现上面的错误,多谢啦!!!
      

  10.   

    使用try—catch捕获异常
    那几个语句可能出现异常   需要捕获
      

  11.   

    我想可能是我表达的不是很清楚,我知道需要捕获异常,我想要知道的是    在conn.java中去掉“ package javafan;”就不会出现上面的报错,就不需要捕获异常也能正常的编译,而为什么加上后,就需要去捕获了呢?是JAVA本身的原因还是我的程序在编写的时候,出现了不合理的地方。
      

  12.   

    楼主你确定你不打包编译就可以通过?!
    我觉得还是你操作错误了,对于checked exception,必须捕获或者抛出。这个和打包不打包没关系啊。