2015-08-22 4 views
0

Мне нужно получить возвращаемые значения из моей базы данных и показать их на экране. Поэтому я написал один файл php и файл класса, используя функцию asynctask, чтобы вернуть данные обратно на экран, но это не сработало !!!!Использование 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(); 
    ?> 

Где я пошло не так?

+0

* Это не сработало !!! *: Пожалуйста, не заставляйте нас угадывать. Расскажите, как это не сработало, что на самом деле произошло и что вы ожидали. – adelphus

+0

Вызов 'params.put (" user ", args [0]);' сразу после инициализации 'params'. Вы делаете 'JSONObject' без« пользователя »в основном. –

+0

@RakeebRajbhandari Итак, как я могу это решить? –

ответ

0

Звоните params.put("user", args[0]); сразу после params инициализируется. Вы делаете 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); 

Сообщите мне, если это работает. Код выглядит хорошо, это недостаток, который я заметил.

+0

не этот пользователь? user = extras.getString («имя пользователя»); –

+0

Нет, это не работает. –

Смежные вопросы