Tuesday 15 March 2016

Android Mysql Tutorial

Dalam bab ini, kita akan menjelaskan, bagaimana Anda dapat mengintegrasikan PHP dan MYSQL dengan aplikasi android Anda. Hal ini sangat berguna jika anda memiliki webserver, dan Anda ingin mengakses data pada aplikasi android Anda.
MYSQL digunakan sebagai database di webserver dan PHP digunakan untuk mengambil data dari database. aplikasi kita akan berkomunikasi dengan halaman PHP dengan parameter yang diperlukan dan PHP akan menghubungi database MySQL dan akan mengambil hasilnya dan mengembalikan hasil kepada kami.

PHP - MYSQL

membuat database

database MySQL dapat dibuat dengan mudah menggunakan script sederhana ini. Pernyataan CREATE DATABASE menciptakan database.
<?php
$con=mysqli_connect("example.com","username","password");
$sql="CREATE DATABASE my_db";
if (mysqli_query($con,$sql))
{
   echo "Database my_db created successfully";
}
?>

membuat Tabel

Setelah database dibuat, waktu untuk membuat beberapa tabel dalam database. Pernyataan CREATE TABLE menciptakan database.
<?php
$con=mysqli_connect("example.com","username","password","my_db");
$sql="CREATE TABLE table1(Username CHAR(30),Password CHAR(30),Role CHAR(30))";
if (mysqli_query($con,$sql))
{
   echo "Table have been created successfully";
}
?>

Memasukkan Nilai dalam tabel

Ketika database dan tabel dibuat. Sekarang waktunya untuk memasukkan beberapa data ke dalam tabel. Pernyataan Insert Ke menciptakan database.
<?php
$con=mysqli_connect("example.com","username","password","my_db");
$sql="INSERT INTO table1 (FirstName, LastName, Age) VALUES ('admin', 'admin','adminstrator')";
if (mysqli_query($con,$sql))
{
   echo "Values have been inserted successfully";
}
?>

PHP - GET dan POST metode

PHP juga digunakan untuk mengambil record dari database mysql setelah dibuat. Dalam rangka untuk mengambil catatan beberapa informasi harus melewati halaman PHP mengenai apa record yang akan diambil.
Metode pertama yang menyampaikan informasi adalah melalui metode GET di mana $ _GET perintah yang digunakan. Variabel yang lulus di url dan catatan diambil. sintaks diberikan di bawah ini -
<?php
$con=mysqli_connect("example.com","username","password","database name");

if (mysqli_connect_errno($con))
{
   echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$username = $_GET['username'];
$password = $_GET['password'];
$result = mysqli_query($con,"SELECT Role FROM table1 where Username='$username' and Password='$password'");
$row = mysqli_fetch_array($result);
$data = $row[0];

if($data){
echo $data;
}
mysqli_close($con);
?>
Metode kedua adalah dengan menggunakan metode POST. Satu-satunya perubahan dalam script di atas adalah untuk menggantikan $ _GET dengan $ _POST. Dalam metode Post, variabel tidak melewati URL.

Android - Menghubungkan MYSQL

Connecting Via Dapatkan Metode

Ada dua cara untuk terhubung ke MYSQL melalui halaman PHP. Yang pertama disebut metode Dapatkan. Kami akan menggunakan HttpGet dan kelas HttpClient untuk menghubungkan. sintaks mereka diberikan di bawah ini -
URL url = new URL(link);
HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet();
request.setURI(new URI(link));
Setelah itu Anda perlu memanggil metode HttpClient kelas mengeksekusi dan menerimanya dalam sebuah objek HttpResponse. Setelah itu Anda perlu membuka aliran untuk menerima data.
HttpResponse response = client.execute(request);
BufferedReader in = new BufferedReader
(new InputStreamReader(response.getEntity().getContent()));

Menghubungkan Via Pos Metode

Dalam metode Post, kelas URLEncoder, URLConnection akan digunakan.urlencoder akan menyandikan informasi dari variabel yang lewat. Ini sintaks diberikan di bawah ini -
URL url = new URL(link);
String data  = URLEncoder.encode("username", "UTF-8") 
+ "=" + URLEncoder.encode(username, "UTF-8");
data += "&" + URLEncoder.encode("password", "UTF-8") 
+ "=" + URLEncoder.encode(password, "UTF-8");
URLConnection conn = url.openConnection(); 
Hal terakhir yang perlu Anda lakukan adalah untuk menulis data ini untuk link.Setelah menulis, Anda perlu membuka aliran untuk menerima data merespons.
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream()); 
wr.write( data ); 
BufferedReader reader = new BufferedReader(new 
InputStreamReader(conn.getInputStream()));   

Contoh

Contoh berikut ini adalah contoh lengkap menghubungkan aplikasi android Anda dengan database MYSQL melalui halaman PHP. Ini menciptakan aplikasi dasar yang memungkinkan Anda untuk login menggunakan GET dan metode POST.

PHP - bagian MYSQL

Dalam contoh ini database dengan nama suhu telah dibuat di 000webhost.com.Dalam database itu, tabel telah dibuat dengan nama table1. Tabel ini memiliki tiga bidang. (Username, Password, Peran). meja hanya memiliki satu record yang ( "admin", "admin", "administrator").
Halaman php telah diberikan di bawah ini yang mengambil parameter dengan metode pos.
<?php
$con=mysqli_connect("mysql10.000webhost.com","username","password","db_name");

if (mysqli_connect_errno($con))
{
   echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$username = $_POST['username'];
$password = $_POST['password'];
$result = mysqli_query($con,"SELECT Role FROM table1 where 
Username='$username' and Password='$password'");
$row = mysqli_fetch_array($result);
$data = $row[0];

if($data){
echo $data;
}
mysqli_close($con);
?>

Android Part

Untuk bereksperimen dengan contoh ini, Anda perlu menjalankan ini pada perangkat yang sebenarnya yang wifi internet terhubung.
TanggaDeskripsi
1Anda akan menggunakan Android studio IDE untuk membuat aplikasi Android dan nama itu sebagai PHPMySql bawah com.example.phpmysql paket. Sementara menciptakan proyek ini, pastikan Anda Targetkan SDK dan Kompilasi Dengan di versi terbaru dari Android SDK untuk menggunakan tingkat yang lebih tinggi dari API.
2Memodifikasi src file / MainActivity.java menambahkan kode Activity.
3Buat src file / SiginActivity.java menambahkan kode PHPMySql.
4Memodifikasi tata letak file XML res / layout / activity_main.xml menambahkan komponen GUI jika diperlukan.
5Memodifikasi res / values ​​/ berkas string.xml dan menambahkan komponen tali yang diperlukan.
6Memodifikasi AndroidManifest.xml untuk menambahkan izin yang diperlukan.
7Jalankan aplikasi dan memilih perangkat android berjalan dan menginstal aplikasi di atasnya dan memverifikasi hasil.
Berikut adalah isi dari src / com.example.phpmysql / MainActivity.java.
package com.example.phpmysql;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends Activity {

   private EditText usernameField,passwordField;
   private TextView status,role,method;

   @Override 
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      
      usernameField = (EditText)findViewById(R.id.editText1);
      passwordField = (EditText)findViewById(R.id.editText2);
      
      status = (TextView)findViewById(R.id.textView6);
      role = (TextView)findViewById(R.id.textView7);
      method = (TextView)findViewById(R.id.textView9);
   }
   
   @Override
   public boolean onCreateOptionsMenu(Menu menu) {
      // Inflate the menu; this adds items to the action bar if it is present.
      getMenuInflater().inflate(R.menu.main, menu);
      return true;
   }
   
   public void login(View view){
      String username = usernameField.getText().toString();
      String password = passwordField.getText().toString();
      method.setText("Get Method");
      new SigninActivity(this,status,role,0).execute(username,password);

   }
   
   public void loginPost(View view){
      String username = usernameField.getText().toString();
      String password = passwordField.getText().toString();
      method.setText("Post Method");
      new SigninActivity(this,status,role,1).execute(username,password);
   }
}
Berikut adalah isi dari src / com.example.phpmysql / SigninActivity.java.
package com.example.phpmysql;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.URI;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;

import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;

import android.content.Context;
import android.os.AsyncTask;
import android.widget.TextView;

public class SigninActivity  extends AsyncTask<String,Void,String>{
   private TextView statusField,roleField;
   private Context context;
   private int byGetOrPost = 0; 
   
   //flag 0 means get and 1 means post.(By default it is get.)
   public SigninActivity(Context context,TextView statusField,TextView roleField,int flag) {
      this.context = context;
      this.statusField = statusField;
      this.roleField = roleField;
      byGetOrPost = flag;
   }
   
   protected void onPreExecute(){

   }
   
   @Override
   protected String doInBackground(String... arg0) {
      if(byGetOrPost == 0){ //means by Get Method
      
      try{
         String username = (String)arg0[0];
         String password = (String)arg0[1];
         String link = "http://myphpmysqlweb.hostei.com/login.php?username="+username+"& password="+password;
         
         URL url = new URL(link);
         HttpClient client = new DefaultHttpClient();
         HttpGet request = new HttpGet();
         request.setURI(new URI(link));
         HttpResponse response = client.execute(request);
         BufferedReader in = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));

           StringBuffer sb = new StringBuffer("");
           String line="";
           
           while ((line = in.readLine()) != null) {
              sb.append(line);
              break;
            }
            in.close();
            return sb.toString();
         }
         
         catch(Exception e){
            return new String("Exception: " + e.getMessage());
         }
      }
      else{
         try{
            String username = (String)arg0[0];
            String password = (String)arg0[1];
            
            String link="http://myphpmysqlweb.hostei.com/loginpost.php";
            String data  = URLEncoder.encode("username", "UTF-8") + "=" + URLEncoder.encode(username, "UTF-8");
            data += "&" + URLEncoder.encode("password", "UTF-8") + "=" + URLEncoder.encode(password, "UTF-8");
            
            URL url = new URL(link);
            URLConnection conn = url.openConnection(); 
            
            conn.setDoOutput(true); 
            OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream()); 
            
            wr.write( data ); 
            wr.flush(); 
            
            BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            
            StringBuilder sb = new StringBuilder();
            String line = null;
            
            // Read Server Response
            while((line = reader.readLine()) != null)
            {
               sb.append(line);
               break;
            }
            return sb.toString();
         }
         catch(Exception e){
            return new String("Exception: " + e.getMessage());
         }
      }
   }
   
   @Override
   protected void onPostExecute(String result){
      this.statusField.setText("Login Successful");
      this.roleField.setText(result);
   }
}
Berikut adalah isi dari activity_main.xml.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:paddingBottom="@dimen/activity_vertical_margin"
   android:paddingLeft="@dimen/activity_horizontal_margin"
   android:paddingRight="@dimen/activity_horizontal_margin"
   android:paddingTop="@dimen/activity_vertical_margin"
   tools:context=".MainActivity" >

   <EditText
      android:id="@+id/editText2"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignRight="@+id/editText1"
      android:layout_below="@+id/editText1"
      android:layout_marginTop="25dp"
      android:ems="10"
      android:inputType="textPassword" >
   </EditText>

   <EditText
      android:id="@+id/editText1"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignParentRight="true"
      android:layout_alignParentTop="true"
      android:layout_marginTop="44dp"
      android:ems="10" >

   <requestFocus android:layout_width="wrap_content" />

   </EditText>

   <TextView
      android:id="@+id/textView1"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignBottom="@+id/editText1"
      android:layout_alignParentLeft="true"
      android:text="@string/Username" />

   <TextView
      android:id="@+id/textView3"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignParentTop="true"
      android:layout_centerHorizontal="true"
      android:text="@string/App"
      android:textAppearance="?android:attr/textAppearanceLarge" />

   <TextView
      android:id="@+id/textView7"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignBottom="@+id/textView5"
      android:layout_alignLeft="@+id/textView6"
      android:text="@string/Role"
      android:textAppearance="?android:attr/textAppearanceMedium"
      android:textSize="10sp" />

   <TextView
      android:id="@+id/textView5"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_below="@+id/textView6"
      android:layout_marginTop="27dp"
      android:layout_toLeftOf="@+id/editText1"
      android:text="@string/LoginRole" />
   <TextView
      android:id="@+id/textView8"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_above="@+id/textView6"
      android:layout_alignLeft="@+id/textView5"
      android:layout_marginBottom="27dp"
      android:text="@string/method" />

   <TextView
      android:id="@+id/textView4"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignLeft="@+id/textView8"
      android:layout_below="@+id/button1"
      android:layout_marginTop="86dp"
      android:text="@string/LoginStatus" />


   <TextView
      android:id="@+id/textView6"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignTop="@+id/textView4"
      android:layout_centerHorizontal="true"
      android:text="@string/Status"
      android:textAppearance="?android:attr/textAppearanceMedium"
      android:textSize="10sp" />

   <TextView
      android:id="@+id/textView9"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignBottom="@+id/textView8"
      android:layout_alignLeft="@+id/textView6"
      android:text="@string/Choose"
      android:textAppearance="?android:attr/textAppearanceMedium"
      android:textSize="10sp" />

   <Button
      android:id="@+id/button2"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_centerVertical="true"
      android:layout_toRightOf="@+id/textView6"
      android:onClick="loginPost"
      android:text="@string/LoginPost" />

   <Button
      android:id="@+id/button1"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignBaseline="@+id/button2"
      android:layout_alignBottom="@+id/button2"
      android:layout_alignLeft="@+id/textView2"
      android:onClick="login"
      android:text="@string/LoginGet" />

   <TextView
      android:id="@+id/textView2"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignBaseline="@+id/editText2"
      android:layout_alignBottom="@+id/editText2"
      android:layout_alignParentLeft="true"
      android:text="@string/Password" />

</RelativeLayout>
Berikut adalah isi dari strings.xml.
<?xml version="1.0" encoding="utf-8"?>
<resources>

   <string name="app_name">PHPMYSQL</string>
   <string name="action_settings">Settings</string>
   <string name="hello_world">Hello world!</string>
   <string name="Username">Username</string>
   <string name="Password">Password</string>
   <string name="LoginGet">Login - Get</string>
   <string name="LoginPost">Login - Post</string>
   <string name="App">Login Application</string>
   <string name="LoginStatus">Login Status</string>
   <string name="LoginRole">Login Role</string>
   <string name="Status">Not login</string>
   <string name="Role">Not assigned</string>
   <string name="method">Login Method</string>
   <string name="Choose">Choose Method</string>
 
</resources>
Berikut adalah isi dari AndroidManifest.xml.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.phpmysql"
   android:versionCode="1"
   android:versionName="1.0" >

   <uses-sdk
      android:minSdkVersion="8"
      android:targetSdkVersion="17" />
      <uses-permission android:name="android.permission.INTERNET"/>
      <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
      
   <application
      android:allowBackup="true"
      android:icon="@drawable/ic_launcher"
      android:label="@string/app_name"
      android:theme="@style/AppTheme" >
      
      <activity
         android:name="com.example.phpmysql.MainActivity"
         android:label="@string/app_name" >
         
         <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
         
      </activity>
      
   </application>
</manifest>
Mari kita coba untuk menjalankan aplikasi PHPMySql Anda. Saya berasumsi bahwa Anda telah terhubung sebenarnya perangkat Android Ponsel Anda dengan komputer Anda. Untuk menjalankan aplikasi dari studio Android, buka salah satu file kegiatan proyek Anda dan klik Run