スレッド道定期的に書かれたローカルファイルとデータベースのレコードを削除

コード:

インポートはjava.io.File;
 インポートのjava.sql.Connection;
 インポートのjava.sql.ResultSet;
 インポートます。java.sql.SQLException;
 インポートjava.sql.Statementの;
 インポートは、java.text.SimpleDateFormat;
 インポートjava.util.Date; 

輸入org.apache.log4j.Logger; 

パブリック クラス DeleteImageAtSpecifiedTime 実装Runnableを{
     静的ロガーロガー= Logger.getLogger(DeleteImageAtSpecifiedTime。クラスは、);
     / ** 
     *指定されたファイルを削除成功を決定する
     * 
     * @paramのファイル名のファイルパス
     *@return そうでない場合はfalseを返し、真真または偽の成功を返す
      * / 
    パブリック 静的 ブールDELETEFILE(ファイルファイル){
 //         ファイルファイル=新しい新しいファイル(ファイル名); // 指定したファイル名を指定してFileオブジェクトを作成し
        たIF(File.Exists( )&& file.isFile()){ // ファイルを削除したいファイルを存在している
            のIF (File.delete()){ 
                logger.info( "画像の削除に成功!" );
                 を返す trueに; 
            } { 
                logger.info( "画像の削除に失敗しました!" );
                 を返す ; 
            } 
        }他の{ 
            logger.info( "ファイルが存在しない、削除失敗した!" );
             を返す ; 
        } 
    } 

    @SuppressWarnings( "静電気のアクセス" 
    @Override 
    公共 ボイドRUN(){
         ながら、真の){
             試み{ 
                のThread.sleep( 1000年* 60 * 60 ;)一度実行時間// 
                logger.info( "定期.........スレッドが眠るローカル絵の終わりを削除" ); 
            } キャッチ(InterruptedExceptionあるE1を){
                 //TODO自動生成されたcatchブロックの
                e1.printStackTrace(); 
            } 
            文字列のSQL = NULL ; 
            接続の接続 = nullを
            声明 = nullを
            ResultSetたresultSet = nullを
            日付日付 = 新しい日付(); 
            SimpleDateFormat DATEFORMAT = 新しいてSimpleDateFormat( "YYYY-MM-DD HH:MM:SS" )。
            文字列形式 = dateFormat.format(日付)。
            jdbcUtil jdbcUtil= 新新JdbcUtilは(); 
            SQL =「SELECT =データベースからIMAGEPATH 1. 1およびWHERE「」+ +フォーマット「」 - CREATETIME> 30" ; //現在の時刻が30日間の作成時間以上であるかを決定 
            logger.info(「行うべきSQL:「+ SQL);
             試み{ 
                コネクション = jdbcUtil.getConnection(); 
                ステートメント = Connection.createStatement(); 
                たresultSet = Statement.executeQuery(SQL);
                 一方(ResultSet.next()){ 
                    文字列IMAGEPATH = resultSet.getString( 「IMAGEPATH」); //ここでは、ローカル画像データベースの絶対パスを取得することです
                    ファイルファイル = 新しい新しいファイル(IMAGEPATH);
                     boolean型ブーン= DELETEFILE(ファイル); // deleteメソッドを呼び出す
                     IF(==ブーンtrueに){ ローカルデータが正常に削除された後、//裁判官は、データベースを削除する 
                        SQLが =「1 WHEREデータベースから削除。1 = ' "+ +フォーマット"' - CREATETIME> 30 " ; 
                        logger.info( " SQLを実行する: "+ SQL);
                         int型のexecuteUpdate = Statement.executeUpdate(SQL)を、
                        logger.info(のexecuteUpdate +"行「削除します)。
                    }  
                }
            } キャッチ(のSQLException E){
                 // TODO自動生成キャッチブロック
                e.printStackTrace(); 
            } 
        } 
    } 
}

スレッドを起動します。

公共の 静的な 無効メイン(文字列[] args)を{ 
    のRunnable Runnableを = 新しい新DeleteImageAtSpecifiedTime(); 
    スレッドスレッド = 新新(Runnableを)スレッド; 
    Thread.start(); 
    logger.info(「定期的にローカル画像スレッドが開始削除..... .... " ); 
}
データベース設計のCREATETIMEデフォルトの場所フィールドは、CURRENT_TIMESTAMPを埋める必要があります
CURRENT_TIMESTAMPは、現在のデータ更新を監視する場合、このフィールドは自動的に互いに対応する更新CREATETIMEを作成します。

上記の方法でツールが私の前のエッセイに記載されています、あなたが探しすることができます。

おすすめ

転載: www.cnblogs.com/wangquanyi/p/11446137.html