【问题标题】:Using asynctask to get data from database使用 asynctask 从数据库中获取数据
【发布时间】:2015-08-22 16:29:01
【问题描述】:

我需要从我的数据库中获取返回值并将其显示在屏幕上。所以我写了一个php文件和一个class文件,使用asynctask函数将数据返回到屏幕,但是没有用!!!!

尝试使用asynctask编写此类与数据库通信:

import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.widget.EditText;
import android.widget.Toast;

import org.json.JSONException;
import org.json.JSONObject;

import java.util.HashMap;

/**
 * Created by QingYong on 21/08/2015.
 */
public class EditProfile extends Activity {

    String user,password,name_entered,username_returned;
    String handphone_no;
    EditText username,password_entered,name,handphone;
    JSONParser jsonParser = new JSONParser();
    private static final String LOGIN_URL = "http://powerbankk.16mb.com/profile.php";

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.editprofile);

        Bundle extras = getIntent().getExtras();
        if (extras != null) {
            user = extras.getString("username");
        }
        new AttemptLogin().execute(user);

        username = (EditText) findViewById(R.id.username_signup);
        password_entered = (EditText) findViewById(R.id.password);
        name = (EditText) findViewById(R.id.name);
        handphone = (EditText) findViewById(R.id.handphone);

        String messageString = username_returned;
        username.setText(messageString);
        String messageString1 = password;
        password_entered.setText(messageString1);
        String messageString2 = handphone_no;
        handphone.setText(messageString2);
        String messageString3 = name_entered;
        name.setText(messageString3);
    }

    class AttemptLogin extends AsyncTask<String, String, JSONObject> {
        protected JSONObject doInBackground(String... args) {
            // TODO Auto-generated method stub
            // here Check for success tag
            try {
                HashMap<String, String> params = new HashMap<>();
                JSONObject json = jsonParser.makeHttpRequest(
                        LOGIN_URL, "POST", params);

                if (json != null) {
                    Log.d("JSON result", json.toString());
                    params.put("user", args[0]);
                    return json;
                }

            } catch (Exception e) {
                e.printStackTrace();
            }

            return null;
        }

        protected void onPostExecute(JSONObject json) {

            if (json != null) {
                Toast.makeText(EditProfile.this, json.toString(),
                        Toast.LENGTH_LONG).show();

                try {
                    username_returned = json.getString("username");
                    password = json.getString("password");
                    handphone_no = json.getString("handphone");
                    name_entered = json.getString("name");
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

这是我的 php 文件:

<?php

// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}

  $username=$_POST["user"];

  $query = " SELECT name,username,password,handphone FROM Login WHERE username='$username'";
  $sql=mysqli_query($conn, $query);

  if (!$sql) {
    echo 'Could not run query: ' . mysql_error();
    exit;
}

  $row = mysqli_fetch_row($sql);
  $response["name"] = $row[0];
  $response["username"] = $row[1];
  $response["password"] = $row[2];
  $response["handphone"] = $row[3];
  die(json_encode($response));

  mysql_close();
  ?>

我哪里出错了?

【问题讨论】:

  • 没用!!!:请不要让我们猜。告诉我们它是如何不起作用的,实际发生了什么以及您期望发生什么。
  • params 初始化后立即调用params.put("user", args[0]);。您正在制作一个基本上没有“用户”的JSONObject
  • @RakeebRajbhandari 那么我该如何解决呢?
  • @QingYong查看答案

标签: php android android-asynctask


【解决方案1】:

params 初始化后立即调用params.put("user", args[0]);。您正在制作一个基本上没有“用户”的JSONObject

HashMap<String, String> params = new HashMap<>();
params.put("user", args[0]);
// now finally make the http request
JSONObject json = jsonParser.makeHttpRequest(LOGIN_URL, "POST", params);

让我知道这是否有效。代码看起来不错,这是我注意到的缺陷。

【讨论】:

  • 这不是用户吗? user = extras.getString("用户名");
猜你喜欢
  • 1970-01-01
  • 2016-10-26
  • 2013-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-14
  • 2012-03-04
  • 2016-11-21
相关资源
最近更新 更多