java-如何一次更新一个表的状态?

时间:2018-11-26 08:58:26

标签: java mysql

我有一个Java程序,可以读取MySQL表中的文件路径,然后找到该文件,然后继续对该文件进行一些索引处理。

表格设计如下:

UniqueID   FilePath                 Status     
 1          C:\Folder1\abc.pdf       Active
 2          C:\Folder1\def.pdf       Active
 3          C:\Folder1\efg.pdf       Error

为简单起见,它会在表中扫描状态= Active的文件,然后找到该文件并执行索引过程。整个过程完成后,状态将更新为Complete

问题是我在resultSet中扫描了其中的每一个。例如,如果abc.pdf不存在,它将状态更新为“错误”,并将状态def.pdf更新为“完成”。

按照我目前的做法,它只是将这两个文件都更新为“状态完成”,我不知道一种实现我想要的方法的方法。谁能建议什么?

也可以说doScan()方法抛出一些错误,例如找不到文件,则abc.pdf的状态应更改为错误 代码:

public void doScan_DB() throws Exception {

        try {


            Statement statement = con.connect().createStatement();

            ResultSet rs = statement.executeQuery("select * from filequeue where Status='Active'");

            while (rs.next()) {
                // get the filepath of the PDF document
                String path1 = rs.getString(2);
                // while running the process, update status : Processing
                updateProcess_DB();

               // call the index function
                Indexing conn = new Indexing();
                conn.doScan(path1);
               updateComplete_DB();






                }


        }catch(SQLException|IOException e){
            e.printStackTrace();

        }

UpdateProcess:

 public void updateProcess_DB(){

  try{



        Statement statement = con.connect().createStatement();
     statement.execute("update filequeue SET STATUS ='Processing' where STATUS ='Active' ");

  }catch(Exception e){

      e.printStackTrace();

  }

UpdateComplete:

public void updateComplete_DB() {

        try {

            Statement statement = con.connect().createStatement();
            statement.execute("update filequeue SET STATUS ='Complete' where STATUS ='Processing' ");

        } catch (Exception e) {
            e.printStackTrace();

        }


    }

UpdateError:

public void updateError_DB(){

        try{

            Statement statement = con.connect().createStatement();
            statement.execute("update filequeue SET STATUS ='Error' where STATUS ='Processing' ");

        }catch(Exception e){


            e.printStackTrace();

        }

    }

已编辑:

代码:

 while (rs.next()) {
                // get the filepath of the PDF document
                String path1 = rs.getString(2);
                // while running the process, update status : Processing
                updateProcess_DB(rs.getString(2));

               // call the index function
                Indexing conn = new Indexing();
                conn.doScan(path1);
               updateComplete_DB(path1);

更新方法:

public void updateProcess_DB(String argument){

  try{



        Statement statement = con.connect().createStatement();
     statement.execute("update filequeue SET STATUS ='Processing' where STATUS ='Active' ");

  }catch(Exception e){

      e.printStackTrace();

  }

    }

0 个答案:

没有答案