inserting data into MySQL from android app

断了今生、忘了曾经 提交于 2019-12-13 12:51:01

问题


I am going to develop a web application for android but I am trying first time ever this experiment so i am not able to complete my task because I am new in it. Its giving me an error like string cannot convert to JSONObject. please please help me I've tried everything upto me but could not get any solution yet. Here is my code.

public class signup extends Activity implements OnClickListener {
Button signup,cancel;
EditText e1,e2,e3,e4;

String name;
String email;
String  mobile;
String passwd;
InputStream is=null;
String result=null;
String line=null;
int code;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.signupfrag);

    if (android.os.Build.VERSION.SDK_INT > 9) {
        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(policy);
    }

    signup=(Button)findViewById(R.id.reg);
    cancel=(Button)findViewById(R.id.regcancel);

    e1=(EditText)findViewById(R.id.name);
    e2=(EditText)findViewById(R.id.uid);
    e3=(EditText)findViewById(R.id.contact);
    e4=(EditText)findViewById(R.id.passwd); 

    signup.setOnClickListener(this);
    cancel.setOnClickListener(this);
}
public void onClick(View v) {
    // TODO Auto-generated method stub
    if(v.getId()==R.id.reg)
    {
        name = e1.getText().toString();
        email = e2.getText().toString();
        mobile = e3.getText().toString();
        passwd = e4.getText().toString();

        insert();
      Intent i=new Intent(signup.this,MainActivity.class);
      startActivity(i);
    }

    if(v.getId()==R.id.regcancel)
    {
      e1.setText(null);
      e2.setText(null);
      e3.setText(null);
      e4.setText(null);
    }
}
private void insert() {
    // TODO Auto-generated method stub
    ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();


    nameValuePairs.add(new BasicNameValuePair("fname",name));
    nameValuePairs.add(new BasicNameValuePair("email",email));
    nameValuePairs.add(new BasicNameValuePair("mobile",mobile));
    nameValuePairs.add(new BasicNameValuePair("passwd",passwd));

        try
        {
        HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost("http://192.168.43.73/htdocs/insert1.php");//10.0.2.2
            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,"iso-8859-1"),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());
    }     

    try
    {
            JSONObject json_data = new JSONObject(result);
            code=(json_data.getInt("code"));

            if(code==1)
            {
        Toast.makeText(getBaseContext(), "Inserted Successfully",
            Toast.LENGTH_SHORT).show();
            }
            else
            {
         Toast.makeText(getBaseContext(), "Sorry, Try Again",
            Toast.LENGTH_LONG).show();
            }
    }
    catch(Exception e)
    {
        Log.e("log_tag", "Error parsing data "+e.toString());
        Log.e("log_tag", "Failed data was:\n" + result);
            Log.e("Fail 3", e.toString());
    }       
  }
}

and this is my php code

<?php
$host='127.0.0.1';
$uname='root';
$pwd='password';
$db="resumemaker";


$con = mysql_connect("localhost", "root");
mysql_select_db($db,$con) or die("db selection failed");

$fname=$_REQUEST['fname'];
$email=$_REQUEST['email'];
$mobile=$_REQUEST['mobile'];
$passwd=$_REQUEST['passwd'];



$flag['code']=0;

if($r=mysql_query("insert into sample values('$fname','$email','$mobile','$passwd') ",$con))
{
    $flag['code']=1;
    //echo"hi";
}

print(json_encode($flag));
mysql_close($con);
?>

Thanks In Advance....


回答1:


Your are not encoding it into json see this example will help you its 100% percent working code

Index.php

<?php

   header("Content-Type:application/json");

   include("function.php");

$fname=$_REQUEST['fname'];
$email=$_REQUEST['email'];
$mobile=$_REQUEST['mobile'];
$passwd=$_REQUEST['passwd'];

 $record = fetchrecord($fname,$email,$mobile,$passwd);


         if(empty($record))
         {
           deliverresponse(200,"Record not found",NULL,0);  
         }
         else
         {
           deliverresponse(200,"Record Displayed",$record,1);   
         }


   function deliverresponse($status,$status_message,$data,$success)
   {
         header("HTTP/1.1 $status $status_message");
         $response['status'] = $status;
         $response['status_message'] = $status_message;
          $response['code'] = $code;
          $response['data'] = $data;
          $jsonresponse = json_encode($response);
          echo $jsonresponse;

   }
?>

Function.php

<?php
        $conn = mysql_connect("localhost", "root", "");

        mysql_select_db('your db name', $conn);

  function fetchrecord($fname,$email,$mobile,$passwd)
  {


     $qur = mysql_query("INSERT INTO `sample` (fname,email,mobile,passwd) VALUES (NULL, '$fname','$email','$mobile','$passwd')") or die ("Query Failed");

     if($qur)
     {
        $msg = "Record Inserted";   

        $user[] = array($msg); 

     }
     else
     {
       $msg = "Record not Inserted";   

        $user[] = array($msg);   
     }
        return $user;

  }

use Async Class for net threading

 public class SignupProcess extends  AsyncTask<String, String, String>

    {
        JSONObject json = new JSONObject();
   private static final String TAG_SUCCESS = "code";
        @Override
        protected void onPreExecute() {

            pDialog = new ProgressDialog(signup.this);
            pDialog.setMessage("Login..");
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(true);
            pDialog.show();

            super.onPreExecute();
        }

        @Override
        protected String doInBackground(String... args) {




            List<NameValuePair> pair = new ArrayList<>();
            pair.add(new BasicNameValuePair("name", name));
            pair.add(new BasicNameValuePair("email", email));
            pair.add(new BasicNameValuePair("password", mobile));
            pair.add(new BasicNameValuePair("status",String,psswd);


            json = JSONParser.makeHttpRequest("http://xxxxxxx","GET", pair);

            Log.d("Create Response", json.toString());

            try {

                int success = json.getInt(TAG_SUCCESS);
                getstatus = success;
                if (success == 1) {

                    Log.d("success!", json.toString());

                }

                else if (success==0){


                    return json.getString(TAG_SUCCESS);

                }


            } catch (JSONException e) {
                e.printStackTrace();
            }
            return null;
        }

JSONParser.java

public class JSONParser {

    static InputStream is = null;
    static JSONObject jObj = null;
    static String json = "";
    public static String Result=null;

    public JSONParser()
    {

    }

    public static JSONObject makeHttpRequest(String url,String method, List<NameValuePair>  pair) {

        try {

            // check for request method
            if(method.equals("POST")){
                // request method is POST
                // defaultHttpClient
                DefaultHttpClient httpClient = new DefaultHttpClient();
                HttpPost httpPost = new HttpPost(url);
                httpPost.setEntity(new UrlEncodedFormEntity(pair));

                HttpResponse httpResponse = httpClient.execute(httpPost);
                HttpEntity httpEntity = httpResponse.getEntity();
                is = httpEntity.getContent();

            }else if(method.equals("GET")){
                // request method is GET
                DefaultHttpClient httpClient = new DefaultHttpClient();
                String paramString = URLEncodedUtils.format(pair, "utf-8");
                url += "?" + paramString;
                HttpGet httpGet = new HttpGet(url);

                HttpResponse httpResponse = httpClient.execute(httpGet);
                HttpEntity httpEntity = httpResponse.getEntity();
                is = httpEntity.getContent();
            }

        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    is, HTTP.UTF_8), 8);
            StringBuilder sb = new StringBuilder();
            String line = null;
            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }
            is.close();
            json = sb.toString();
            Result = json;
        } catch (Exception e) {
            Log.e("Buffer Error", "Error converting result " + e.toString());
        }

        // try parse the string to a JSON object
        try {
            jObj = new JSONObject(json);
        } catch (JSONException e) {
            Log.e("JSON Parser", "Error parsing data " + e.toString());
        }

        return jObj;
    }


}

On Button click listener write

new SignupProcess().execute();


来源:https://stackoverflow.com/questions/31233791/inserting-data-into-mysql-from-android-app

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!