我有以下情形:在我的應用程序中,我使用AsyncTask A連接到數據庫並檢查登錄。這個AsyncTask的doInBackground方法返回一個布爾值。 對於某些用戶交互,我使用AsyncTask B連接到相同的數據庫並獲取ResultSet。 一切工作正常,但我只想使用一個AsyncTask。我怎樣才能做到這一點?使用一個AsyncTask而不是兩個AsyncTasks在android
的AsyncTask A碼
@Override
protected Boolean doInBackground(String... arg0) {
String username = arg0[0];
String password = arg0[1];
Boolean v = false;
ResultSet rs = null;
Statement stmt = null;
try {
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
conn = DriverManager.getConnection(jdbcURL, user, passwd);
try {
stmt = conn.createStatement();
try {
rs = stmt
.executeQuery("execute"
+ username + "'");
if (rs.next()) {
String p=rs.getString("pass_word");
if (p==null){
if(password.equals(""))
v = true;}
else
if(p.equals(password))
v=true;
}
} finally {
try {
rs.close();
} catch (Throwable ignore) {
}
}
} finally {
try {
stmt.close();
} catch (Throwable ignore) {
}
}
} catch (java.sql.SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (java.lang.ClassCastException e) {
e.printStackTrace();
}
return v;
}
的AsyncTask B碼
@Override
protected ResultSet doInBackground(String... params) {
Statement stmt = null;
ResultSet rs = null;
try {
if (conn == null) {
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
conn = DriverManager.getConnection(jdbcURL, user, passwd);
}
stmt = conn.createStatement();
rs = stmt.executeQuery(params[0]);
} catch (SQLException e) {
e.printStackTrace();
}
return rs;
}
你可以包含一些代碼嗎? – Cornholio 2013-03-27 09:40:48
如果登錄存在,你會執行什麼樣的動作? – Sajmon 2013-03-27 09:42:03
@Cornholio添加了一些代碼 – 2013-03-27 09:46:04