将Async与JDBC配合使用

时间:2019-07-17 15:52:49

标签: mysql jdbc

我正在尝试从服务器上托管的数据库(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块。

1 个答案:

答案 0 :(得分:0)

Android新手在这里。我认为最好是制作一个可以完成所有这些工作的PHP脚本,然后通过HttpURLConnection调用它。

还应该使用PreparedStatements而不是Statements以避免SQL注入。