sql >> Database >  >> RDS >> Mysql

Verbind mySQL met Android

Hier is het voorbeeld

BEWERKEN: Maak eerst een database naam veronderstel dbname in MySql in wamp of op uw server en maak een tabel met de naam emp_info waarin twee velden worden toegevoegd id en naam

Hier is het scenario om de ID en NAAM van de werknemer in te voegen uit de EDITEXT naar de MYSQL-serverdatabase

De globale variabelen zijn

  String name;
    String id;
    InputStream is=null;
    String result=null;
    String line=null;
    int code;

Voor activiteitscode

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONObject;

import android.app.Activity;
import android.os.Bundle;
import android.os.StrictMode;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class add extends Activity {

    String name;
    String id;
    InputStream is=null;
    String result=null;
    String line=null;
    int code;
    String tobed = null;



    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.add);
        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(policy);
        final EditText e_id=(EditText) findViewById(R.id.editText1);
        final EditText e_name=(EditText) findViewById(R.id.editText2);
        Button insert=(Button) findViewById(R.id.button1);

        insert.setOnClickListener(new View.OnClickListener() {

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

            id = e_id.getText().toString();
            name = e_name.getText().toString();

            insert();
        }
    });
    }
}

Methode voor het invoegen van gegevens

public void insert()
    {
        ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();

      // put the values of id and name in that variable
    nameValuePairs.add(new BasicNameValuePair("id",id));
    nameValuePairs.add(new BasicNameValuePair("name",name));

        try
        {
        HttpClient httpclient = new DefaultHttpClient();

          // here is the php file
         // for local use for example if you are using wamp just put the file in www/project folder
        HttpPost httppost = new HttpPost("http://10.0.2.2/project/insert2.php");
        // if the file is on server
        HttpPost httppost = new HttpPost("http://example.com/insert2.php");
            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
    {

            // get the result from php file
            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("Fail 3", e.toString());
            Log.i("tagconvertstr", "["+result+"]");
    }
    }

hier is insert2.php bestand

<?php
    // this variables is used for connecting to database and server
    $host="yourhost";
    $uname="username";
    $pwd='pass';
    $db="dbname";

     // this is for connecting
    $con = mysql_connect($host,$uname,$pwd) or die("connection failed");
    mysql_select_db($db,$con) or die("db selection failed");

    // getting id and name from the client
     if(isset($_REQUEST)){
    $id=$_REQUEST['id'];
    $name=$_REQUEST['name'];}

    $flag['code']=0;

    // query for insertion
    // table name emp_info and its fields are id and name
    if($r=mysql_query("insert into emp_info values('$name','$id') ",$con))
    {
        // if query runs succesfully then set the flag to 1 that will be send to client app
        $flag['code']=1;
        echo"hi";
    }
      // send result to client that will be 1 or 0
    print(json_encode($flag));
    //close
    mysql_close($con);


 ?>

Tweede bewerking:-

Voor het lezen van gegevens heb ik asyntask gedaan

Hier worden de gegevens weergegeven in een lijstweergave.

public class read extends Activity {
     private String jsonResult;//
      // use this if your file is on server
     private String url = "http://exmaple.com/read.php";
     // use this if you are locally using
     // private String url = "http://10.0.2.2/project/read.php";
     private ListView listView;
     Context context;
     String name;
        String id;
        InputStream is=null;
        String result=null;
        String line=null;
        int code;
     @Override
     protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.read);
      StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
      StrictMode.setThreadPolicy(policy);
      context = this;
      listView = (ListView) findViewById(R.id.listView1);
      accessWebService();
     }

accessWebService-methode

       public void accessWebService() {
       JsonReadTask task = new JsonReadTask();
       task.execute(new String[] { url });
         }

voor JsonReadTask-klasse

private class JsonReadTask extends AsyncTask<String, Void, String> {
      // doInBackground Method will not interact with UI 
      @Override

      protected String doInBackground(String... params) {
       // the below code will be done in background
       HttpClient httpclient = new DefaultHttpClient();
       HttpPost httppost = new HttpPost(params[0]);
       try {
        HttpResponse response = httpclient.execute(httppost);
        jsonResult = inputStreamToString(
          response.getEntity().getContent()).toString();
       }

       catch (ClientProtocolException e) {
        e.printStackTrace();
        Log.e("Fail 12", e.toString());
       } catch (IOException e) {
           Log.e("Fail 22", e.toString());
        e.printStackTrace();
       }
       return null;
      }

      private StringBuilder inputStreamToString(InputStream is) {
       String rLine = "";
       StringBuilder answer = new StringBuilder();
       BufferedReader rd = new BufferedReader(new InputStreamReader(is));

       try {
        while ((rLine = rd.readLine()) != null) {
         answer.append(rLine);
        }
       }

       catch (IOException e) {
        // e.printStackTrace();
        Toast.makeText(getApplicationContext(),
          "Error..." + e.toString(), Toast.LENGTH_LONG).show();
       }
       return answer;
      }

      // after the doInBackground Method is done the onPostExecute method will be called
      @Override
      protected void onPostExecute(String result) {
      // here you can interact with UI
       ListDrwaer();
      }
     }// end async task

ListDrawaer-methode

 // build hash set for list view
     public void ListDrwaer() {
      List<Map<String, String>> employeeList = new ArrayList<Map<String, String>>();

      try {
        // getting data from server 
       JSONObject jsonResponse = new JSONObject(jsonResult);
       if(jsonResponse != null)
       {
       JSONArray jsonMainNode = jsonResponse.optJSONArray("emp_info");

       // get total number of data in table
       for (int i = 0; i < jsonMainNode.length(); i++) {
        JSONObject jsonChildNode = jsonMainNode.getJSONObject(i);

        String name = jsonChildNode.optString("name"); // here name is the table field
        String number = jsonChildNode.optString("id"); // here id is the table field
        String outPut = name + number ; // add two string to show in listview 
        employeeList.add(createEmployee("employees", outPut));
       }
       }
      } catch (JSONException e) {
       Toast.makeText(getApplicationContext(), "Error" + e.toString(),
         Toast.LENGTH_SHORT).show();
      }

      SimpleAdapter simpleAdapter = new SimpleAdapter(this, employeeList,
        android.R.layout.simple_list_item_1,
        new String[] { "employees" }, new int[] { android.R.id.text1 });
      listView.setAdapter(simpleAdapter);
     }

     private HashMap<String, String> createEmployee(String name, String number) {
      HashMap<String, String> employeeNameNo = new HashMap<String, String>();
      employeeNameNo.put(name, number);
      return employeeNameNo;
     }
    }

en uw read.php-bestandscode

<?php
$host="localhost"; //replace with database hostname
$username="root"; //replace with database username
$password=""; //replace with database password
$db_name="dbname"; //replace with database name

$con=mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
$sql = "select * from emp_info";
$result = mysql_query($sql);
$json = array();

if(mysql_num_rows($result)){
while($row=mysql_fetch_assoc($result)){
$json['emp_info'][]=$row;
}
}
mysql_close($con);
echo json_encode($json);
?> 

en als u uw internetverbinding wilt controleren voordat u deze invoeging gebruikt en leest, gebruik dan deze methode .. d.w.z. plaats deze methode in de instructie if else

 public boolean isOnline() {
                ConnectivityManager cm =
                    (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
                NetworkInfo netInfo = cm.getActiveNetworkInfo();
                if (netInfo != null && netInfo.isConnectedOrConnecting()) {
                    return true;
                }
                return false;
            }

Gebruik voor bijwerken en verwijderen de insert-methode om de waarden door te geven aan de server en verander gewoon de query van insert2.php om dergelijke bij te werken

if($r=mysql_query("UPDATE emp_info SET employee_name = '$name' WHERE employee_name = '$id'",$con))
    {
        $flag['code']=1;
    } 

voor verwijdering

if($r=mysql_query("DELETE FROM emp_info WHERE employee_name = '$name'",$con))
    {
        $flag['code']=1;
        echo"hi";
    }

Ook als je dit hebt geleerd, zou je de volgende taak moeten leren threading en Asyntask om het beter te maken, aangezien het werken aan de hoofdthread niet goed is in Android. plaats deze invoegmethode gewoon in Asyntask zoals ik heb vermeld in de leesmethode, zodat de gebruikersinterface niet gestoord wordt en het internet op de achtergrond wordt gedaan.

OPMERKING:

voeg voor een nieuwe versie van php deze regel toe na <?php fragment

error_reporting(E_ALL ^ E_DEPRECATED);



  1. Veroorzaakt deze thread-local Flask-SQLAchemy-sessie een MySQL-server is verdwenen fout?

  2. Voeg dynamische selectievakwaarde in Mysql-database in en toon verzonden gegevensbericht

  3. Maak een index op een enorme MySQL-productietafel zonder tafelvergrendeling

  4. Een database herstellen in SQL Server 2017