public void start(int delay,int internal )
 {
  timer.schedule(task,delay*1000,internal*1000); 
 }
改为:
public void start(int delay,int internal )
 {
        try {
  timer.schedule(task,delay*1000,internal*1000); 
        }
        catch(SQLException e) {
         System.out.println("sqlerror");
        }
 }

解决方案 »

  1.   

    must be caught or
    declared to be thrown
    是典型的没有做异常处理的保错
      

  2.   

    public TimerTask task = new TimerTask()
     {  
        public void run ()
    {      ConnectionManager task = new ConnectionManager();
          try {
             task.Results();
          } catch (SQLException e) {
             ......
          }
      } 
     };
      

  3.   

    哇,谢谢各位啊。
    redex(cc)  的思路是对的。不过加上以后还是报错。
    按照  nwsl(阿甘) 的加上以后就成功了。非常感谢 redex(cc) 、nwsl(阿甘) 、wangqm0629(风景)、charlie0895(命—love alice crazy) !!
    真的好感动,^_^。不过看了大家的回帖 ,有两点不是很明白的地方:
    1、为什么没有做异常处理就报错呢?
    2、我在定义 class PickTask 的时候,没有throws SQLException,ClassNotFoundException 的啊,
    为什么可以做异常处理呢?(程序中的这里: catch (SQLException e) )。现在修改后可以正常执行的代码如下:import java.util.*;
    import java.io.*;
    import java.sql.*;public class TimerUse
    {
     public static void main(String[] args)
     throws SQLException,ClassNotFoundException{
      PickTask pt = new PickTask();
      pt.start(1,3);
      
     } 
    }// class PickTask start
    class PickTask
    {
     private Timer timer;
     
     PickTask()
     {
      timer = new Timer();
     }
      
     
     public TimerTask task = new TimerTask()
     {  
        public void run ()
    {
    ConnectionManager task = new ConnectionManager();
            try{
             task.Results();
               } 
               catch (SQLException e) {
                System.out.println("sqlerroraa");
               }
      } 
     };
     public void start(int delay,int internal )
     {
      try {
          timer.schedule(task,delay*1000,internal*1000); 
            }
            catch(SQLException e) {
             System.out.println("sqlerrorbb");
            }
     }
     }
    // class PickTask endclass ConnectionManager
    {
      private Connection connection;
      private Statement statement;
      private String driver="sun.jdbc.odbc.JdbcOdbcDriver";
      private String dbURL="jdbc:odbc:db";
      private String login="test";
      private String password="pwd";
      private PreparedStatement stm;
      
      ConnectionManager()
      {
      }
      
       public void Results()
       throws SQLException,ClassNotFoundException{
         String sSQL="SELECT USER_NAME,USER_BH FROM  T_USER_INFO WHERE USER_BH LIKE '00%'";
      
         try{
         Class.forName(driver);
            connection=DriverManager.getConnection(dbURL,login,password);
            Statement stm = connection.createStatement();        ResultSet res = stm.executeQuery(sSQL);
            
            System.out.print("\n"+"Name"+"\t"+"User_BH");
            
            while(res.next()){
             System.out.print("\n"+res.getString("USER_NAME") +"\t"+ res.getString("USER_BH"));
            }   
            stm.close();         
            }catch(SQLException e){
             System.out.println("sqlerror");
                connection=null;
                }
       }             
    }
      

  4.   

    报错如下:D:\amugzml\worklc\test>javac TimerUse.java
    TimerUse.java:34: unreported exception java.lang.ClassNotFoundException; must be
     caught or declared to be thrown
                    task.Results();
                                ^
    TimerUse.java:48: exception java.sql.SQLException is never thrown in body of cor
    responding try statement
               catch (SQLException e) {
               ^
    2 errors