我正在尝试从服务器上托管的数据库(MySQL)中获取一些数据。 为此,我将JDBC与Async一起使用。我在另一个应用程序中使用了相同的代码。而且效果很好。但是,当我尝试在此应用中执行相同的操作时。不调用doInBackGround()方法。
我已将连接类用作内部类。并初始化了一个名为last的数组。我已经将其第0个索引更改为一些随机字符串,并将其打印在postExecute()中。但这是空的,而我后来才知道从未调用过doInBackground()。任何帮助,将不胜感激。谢谢
public class connection extends AsyncTask<String, String, String> {
Context context;
String[] last = new String[5];
connection(Context ctx) {
context = ctx;
}
@Override
protected String doInBackground(String... strings) {
last[0] = "something";
// try {
// Class.forName("com.mysql.jdbc.Driver");
// Connection con = DriverManager.getConnection(DB_URL, USER, PASS);
//
// if (con == null) {
// last[0]= "con issue";
// } else {
// String Query = "select * from users where ID like '" + search + "';";
// last[0] = "in else";
// Statement stmt = con.createStatement();
// last[0] = "after stm";
// ResultSet res = stmt.executeQuery(Query);
// last[0] = "after execute";
// while (res.next()) {
// last[0] = "insidewhile";
//// last[0] = res.getString("NAME");
//// last[1] = res.getString("KISAM");
//// last[2] = res.getString("MOKA");
//// last[3] = res.getString("ONWAN");
////
// return null;
// }
//
// last[0] = "not";
// }
// con.close();
// } catch (ClassNotFoundException e) {
// last[0] = e.getException().getMessage();
// Log.e("ClassNotFoundException", e.getException().getMessage());
// e.printStackTrace();
// } catch (SQLException e) {
// last[0] = e.toString();
// Log.e("SQL ERROR",e.toString());
// e.printStackTrace();
// }
return null;
}
@Override
protected void onPreExecute() {
Toast.makeText(Search.this, "Searching", Toast.LENGTH_SHORT).show();
}
@Override
protected void onPostExecute(String s) {
String S = last[0];
if(TextUtils.isEmpty(S) || s == null){
Toast.makeText(context, " doinBackground() not called", Toast.LENGTH_LONG).show();
}
else {
Toast.makeText(Search.this, "S", Toast.LENGTH_LONG).show();
// if (!S.contentEquals("not")) {
// kisa = (last[1]);
// mok = (last[2]);
// Name = (last[0]);
// onwa = (last[3]);
// AF.setText(Name);
// AF.setVisibility(View.VISIBLE);
// pb.setVisibility(View.GONE);
// } else {
//
// Toast.makeText(Search.this, "NO Record Found", Toast.LENGTH_SHORT).show();
// }
}
}
@Override
protected void onProgressUpdate(String... values) {
}
}
logcat中没有错误。甚至我都登录了catch块。
答案 0 :(得分:0)
Android新手在这里。我认为最好是制作一个可以完成所有这些工作的PHP脚本,然后通过HttpURLConnection调用它。
还应该使用PreparedStatements而不是Statements以避免SQL注入。