我有一個應用程序,它創建了一些查詢(更新或插入),然後執行每個查詢。如何將字符串寫入容器以便在循環之後使用?
整個代碼工作正常,但我看到我的服務器IO延遲在這個過程中太多了。
代碼執行一個週期爲1分鐘的循環。
然後我想要做的是將每個查詢寫入內存,而不是執行它,然後,一旦我有整個查詢列表執行,使用mysql中的「LOAD DATA LOCAL INFILE」,這將花費更少的時間。
我的問題是:如何在Java中的「文件」或「任何其他容器」中將所有查詢(字符串對象)寫入循環之後使用它?
@ user3283548這是我的示例代碼:
的Class1:
import java.util.ArrayList;
public class Class1 {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
ArrayList<String> Staff=new ArrayList<String>();
Staff.add("tom");
Staff.add("Laura");
Staff.add("Patricia");
for (int x = 0; x < Staff.size(); x++) {
System.out.println(Staff.get(x));
Class2 user = new Class2 (Staff.get(x));
user.checkUser();
}
}
}
等級2:
public class Class2 {
private String user;
public Class2(String user){
this.user=user;
}
public void checkUser() throws Exception{
if (user.equals("tom")){
String queryUser="update UsersT set userStatus='2' where UserName='"+user+"';";
Class3 updateUser = new Class3(queryUser);
updateUser.UpdateQuery();;
}else{
String queryUser="Insert into UsersT (UserName,userStatus)Values('"+user+"','1');";
Class3 updateUser = new Class3(queryUser);
updateUser.InsertQuery();
System.out.println(user+" is not ton doing new insert");
}
}
}
Class3的:
public class Class3 {
public String Query;
public Class3(String Query){
this.Query = Query;
}
public void UpdateQuery() throws Exception{
/*// Accessing Driver From Jar File
Class.forName("com.mysql.jdbc.Driver");
//DB Connection
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/default","root","1234567");
String sql =Query;
PreparedStatement pst = con.prepareStatement(sql);*/
System.out.println(Query); //Just to test
//pst.execute();
}
public void InsertQuery() throws Exception{
/*// Accessing Driver From Jar File
Class.forName("com.mysql.jdbc.Driver");
//DB Connection
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/default","root","1234567");
String sql =Query;
PreparedStatement pst = con.prepareStatement(sql);*/
System.out.println(Query); //Just to test
//pst.execute();
}
}
然後,我想做的事在中創建一個ArraList Class1並在Class3中使用它來收集所有必須執行的查詢。
這個想法是在主進程完成後一次執行查詢列表,而不是爲Class1循環中的每個元素執行查詢。我想這樣做,因爲我認爲這將是花費較少的資源IO從服務器HD
感謝您的編輯Rembo。第一篇文章,所以我會確保下一次正確的代碼塊內的代碼:)。 –
感謝您的信息。關於字符串,不完全是我的問題,因爲我不得不創建只有100個字符串沒有更多。所花費的時間是因爲在循環內部,我打電話給別人上課花費一點時間做一些其他操作。但無論如何,我不知道它,並確定我會在我的代碼的其他部分使用它。讓我分享這個清晰的例子(http://www.yoda.arachsys.com/java/strings.html) – Sallyerik
關於存儲對象:我知道了,我可以使用ArrayList,然後使用它。但我現在的問題是,我的主類中的循環調用其他類不返回任何東西,第二類做一些操作,然後直接調用我的Update_Databse_Class在我的數據庫中執行查詢。有什麼辦法可以在我的主類中創建一個ArrayList,它可以用於任何其他類,直到它被刪除/銷燬/刪除/關閉或其他任何類。 – Sallyerik