【问题标题】:Retrieve data in edittext from mysql database in android从android中的mysql数据库中检索edittext中的数据
【发布时间】:2016-04-09 17:40:20
【问题描述】:

我的应用有一个 An Activity,它从 MySql 中检索数据以在单击按钮时编辑文本

  1. 活动代码、php代码和布局代码正在附加中。

编译时没有错误,logcat 中有一些错误。对话框打开,持续运行几秒钟然后关闭,但编辑文本字段没有被 MySQL 的数据填充。

  1. MySQL 中表的名称是 services_provider_details1,其中包含各个列(Service_Provider_ID,Name,Address, Pincode, Phone_Number,DOB,Aadhar_Number,Price,Specialisation,Status)。

这是我的代码

public class Update extends  Activity {


EditText  et_spid,et_fullname,et_address,et_sid,et_aadhar,et_dob,et_phone,et_pincode,et_price,et_status,et_spl ;
Spinner spinner;
Button update_button, go;
String spid;

InputStream is=null;
String result=null;
String line=null ;
String myJSON;
JSONArray peoples = null;



    public static final String TAG_SUCCESS="success";
    public static  final String TAG_PROVIDERS = "providers";
    public static  final String TAG_SPID = "spid";
    public static  final String TAG_NAME = "Name";
    public static  final String TAG_ADDRESS = "Address";
    public static  final String TAG_PINCODE = "Pincode";
    public static final  String TAG_PHONENUMBER = "Phone_Number";
    public static  final String TAG_AADHARNUMBER = "Aadhar_Number";
    public static  final String TAG_PRICE = "price";
    public static  final String TAG_SPL = "spl";
    public static  final String TAG_STATUS = "status";



    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.update);
          et_spid = (EditText) findViewById(R.id.edittext_spid_insert);
          et_fullname = (EditText) findViewById(R.id.edittext_name_insert);
          et_address = (EditText) findViewById(R.id.edittext_address_insert);
          et_pincode = (EditText) findViewById(R.id.edittext_pin_insert);
          et_phone = (EditText) findViewById(R.id.edittext_phone_insert);
          et_aadhar = (EditText) findViewById(R.id.edittext_aadhar_insert);
          spinner = (Spinner) findViewById(R.id.spinner1);

        et_price =(EditText) findViewById(R.id.edittext_sid_price);
        et_status = (EditText) findViewById(R.id.edittext_sid_status);
        et_spl =(EditText) findViewById(R.id.edittext_sid_speacialisation); 
         update_button = (Button) findViewById(R.id.button_update);
         go = (Button)findViewById(R.id.button_go);



        go.setOnClickListener(new OnClickListener() {


            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                spid=et_spid.getText().toString();
                new go().execute();
            }
        });
        }

    class go extends AsyncTask<String, String, String>
    {
        ProgressDialog progress;
        String Url="http://192.168.2.7/myapp/update.php";
        ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
        String res = "";
        @Override
        protected void onPreExecute() {
            // TODO Auto-generated method stub
            super.onPreExecute();

            progress = ProgressDialog.show(Update.this, "Loading Details",
                    "Please wait..", false);
        }

        @Override
        protected String doInBackground(String... arg0) {
            // TODO Auto-generated method stub





        try {

            DefaultHttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost(Url);
            nameValuePairs = new ArrayList<NameValuePair>(1);
            nameValuePairs.add(new BasicNameValuePair("spid",spid));
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
            HttpResponse response = httpclient.execute(httppost); 
            HttpEntity entity = response.getEntity();
            is = entity.getContent();

            Log.e("pass 1", "connection success ");
    }
        catch(Exception e)
    {
            Log.e("Fail 1", e.toString());
            Toast.makeText(getApplicationContext(), "Invalid IP Address",
            Toast.LENGTH_LONG).show();
    }    
         try{

            BufferedReader reader = new BufferedReader
                (new InputStreamReader(is,"utf-8"),8);
                StringBuilder sb = new StringBuilder();
                while ((line = reader.readLine()) != null)
        {
                    sb.append(line + "\n");
                }
                is.close();
                result = sb.toString();
            Log.e("pass 2", "connection success ");
    }
         catch(Exception e)
        {
        Log.e("Fail 2", e.toString());
    }     


        return res;

     }
        protected void onPostExecute(String response) {
            myJSON = response ;
            try
            {
                JSONObject jsonObj = new JSONObject(myJSON);
                peoples = jsonObj.getJSONArray("result");

                for (int i = 0; i < peoples.length(); i++) {
                    JSONObject c = peoples.getJSONObject(i);


             String Name=(c.getString("Name"));
                String Address=(c.getString("Address"));
                String Pincode=(c.getString("Pincode"));
                String Phone_Number=(c.getString("Phone_Number"));
                String Aadhar_Number=(c.getString("Aadhar_Number"));
                String price=(c.getString("price"));
                String spl=(c.getString("spl"));
                String status=(c.getString("status"));


                et_fullname.setText(Name);
                 et_address.setText(Address);
                 et_pincode.setText(Pincode);
                 et_phone.setText(Phone_Number);
                 et_aadhar.setText(Aadhar_Number); 
                 et_price.setText(price);
                et_spl.setText(spl);
                et_status.setText(status);




            } 
            }
             catch(Exception e)
            {

                 e.printStackTrace();
            }
progress.dismiss();
        }
    }


}
  1. PHP 代码
mysql_connect("localhost","root","");  
mysql_select_db("myapp");  



     $spid = $_POST['spid'];


    $sql="select * from services_provider_details1 WHERE Service_Provider_ID='$spid' " ;
    $r=mysql_query($sql);
    $result = array();
    while($row=mysql_fetch_array($r))
    {
        array_push($result,
array('Name'=>$row[1],'Address'=>$row[2],'Pincode'=>$row[3],'Phone_Number'=>$row[4],'Aadhar_Number'=>$row[6],'price'=>$row[8],'spl'=>$row[9],'status'=>$row[10]));
    }

    echo json_encode(array("result"=>$result));

mysql_close();

?>

程序运行时的Logcat

04-10 13:24:57.105: W/Trace(1859): Unexpected value from nativeGetEnabledTags: 0
04-10 13:24:57.145: W/Trace(1859): Unexpected value from nativeGetEnabledTags: 0
04-10 13:24:57.145: W/Trace(1859): Unexpected value from nativeGetEnabledTags: 0
04-10 13:24:57.225: W/System.err(1859): org.json.JSONException: End of input at character 0 of 
04-10 13:24:57.296: W/System.err(1859):     at org.json.JSONTokener.syntaxError(JSONTokener.java:450)
04-10 13:24:57.296: W/System.err(1859):     at org.json.JSONTokener.nextValue(JSONTokener.java:97)
04-10 13:24:57.306: W/System.err(1859):     at org.json.JSONObject.<init>(JSONObject.java:154)
04-10 13:24:57.325: W/System.err(1859):     at org.json.JSONObject.<init>(JSONObject.java:171)
04-10 13:24:57.325: W/System.err(1859):     at com.example.homerun.Update$go.onPostExecute(Update.java:197)
04-10 13:24:57.345: W/System.err(1859):     at com.example.homerun.Update$go.onPostExecute(Update.java:1)
04-10 13:24:57.357: W/System.err(1859):     at android.os.AsyncTask.finish(AsyncTask.java:631)
04-10 13:24:57.376: W/System.err(1859):     at android.os.AsyncTask.access$600(AsyncTask.java:177)
04-10 13:24:57.376: W/System.err(1859):     at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
04-10 13:24:57.396: W/System.err(1859):     at android.os.Handler.dispatchMessage(Handler.java:99)
04-10 13:24:57.396: W/System.err(1859):     at android.os.Looper.loop(Looper.java:137)
04-10 13:24:57.406: W/System.err(1859):     at android.app.ActivityThread.main(ActivityThread.java:5039)
04-10 13:24:57.426: W/System.err(1859):     at java.lang.reflect.Method.invokeNative(Native Method)
04-10 13:24:57.436: W/System.err(1859):     at java.lang.reflect.Method.invoke(Method.java:511)
04-10 13:24:57.436: W/System.err(1859):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
04-10 13:24:57.465: W/System.err(1859):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
04-10 13:24:57.465: W/System.err(1859):     at dalvik.system.NativeStart.main(Native Method)
04-10 13:24:57.475: I/Choreographer(1859): Skipped 113 frames!  The application may be doing too much work on its main thread.
04-10 13:24:58.285: W/Trace(1859): Unexpected value from nativeGetEnabledTags: 0
04-10 13:24:58.285: W/Trace(1859): Unexpected value from nativeGetEnabledTags: 0

另外请告诉我是否需要 XML 文件?

【问题讨论】:

  • 你应该在后执行方法中进行 Jason 解析。 ui 不应从后台线程更新
  • 首先,所有mysql_ 命令自 PHP 5.5.0 起已被弃用,它们已在 PHP 7.0.0 中删除。我建议切换到 PDO 或 MySQLi。
  • 另外,您的服务器是否返回正确的数据?有几件事情可能会出错,无论是在服务器上还是在客户端上。我会首先使用Postman 之类的工具来验证服务器是否返回了我期望的结果。一旦服务器部分工作,我将专注于客户端部分。
  • @Arjan 谢谢 Arjan .. 是的,请帮助我将非常感激 .. 它现在对我来说太令人沮丧了 .. 它就像 android .. 把我击倒了 .. 谢谢 .. 我已经添加了什么它看起来像在服务器端。
  • @VivekMishra 感谢您的回复,是的,我已经对 json 进行了一些更改,并且现在在 post execute 方法中完成了解析,但是在编辑文本中仍然没有任何内容,并且在 log cat 中也出现了一些错误在这里更新。所以请帮帮我。

标签: php android mysql json database


【解决方案1】:

主要问题似乎是服务器端的php代码,更具体地说是这部分:

$spid=$_REQUEST['spid'];
$name=$_REQUEST['name'];
$address=$_REQUEST['address'];
$pin=$_REQUEST['pin'];
$phone=$_REQUEST['phone'];
$aadhar=$_REQUEST['aadhaar'];
$price=$_REQUEST['price'];
$spl=$_REQUEST['spl'];
$status=$_REQUEST['status'];

您不检查数组$_REQUEST中是否存在键,当键不存在时会触发通知。这是预期的行为。

要解决这个问题,您应该更新每一行,以便它检查密钥是否存在,并且只有在存在时才访问它:

$spid = isset($_REQUEST['spid']) ? $_REQUEST['spid'] : null;

在 PHP 7 中(你没有使用它,因为你使用的是 mysql_ 函数),你可以用更短的语法来做同样的事情:

$spid = $_REQUEST['spid'] ?? null;

由于您在查询的WHERE 子句中使用了$spid,因此您可能需要确保该字段存在。这也需要明确的检查。

【讨论】:

  • 是的,我已经在 php 文件中做了一些你建议的更改,并删除了 REQUEST 的东西,现在 PhP 工作正常,但在 log cat 中仍然出现一些错误,我在 json 中做了一些更改并且解析现在在 post execute 方法中完成,但编辑文本中仍然没有任何内容,更新的代码和 logcat 在这里更新。所以请帮帮我。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-24
  • 2016-09-16
  • 1970-01-01
  • 1970-01-01
  • 2016-07-16
  • 2016-06-21
  • 2017-08-02
相关资源
最近更新 更多