gpt4 book ai didi

mysql - 将 Async 与 JDBC 结合使用时,doInBackground() 不起作用

转载 作者:行者123 更新时间:2023-11-29 15:45:41 25 4
gpt4 key购买 nike

我正在尝试从服务器上托管的数据库(MySQL)中获取一些数据。为此,我将 JDBC 与异步结合使用。我在另一个应用程序中使用了相同的代码。而且效果很好。但是当我尝试在这个应用程序中做同样的事情时。 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 block 。

最佳答案

这里是 Android 新手。我认为最好是编写一个 PHP 脚本来完成所有这些工作,并通过 HttpURLConnection 调用它。

此外,您应该使用PreparedStatements 而不是Statements 来避免SQL 注入(inject)。

关于mysql - 将 Async 与 JDBC 结合使用时,doInBackground() 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57079898/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com