我有一个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();
}
}