آموزش دیتابیس MySQL در اندروید + کد PHP
سلام دوستان در این سری از آموزش برنامه نویسی اندروید به آموزش دیتابیس MySQL در اندروید + کد PHP می پردازیم قبلا آموزش های مختلفی از دیتابیس MySQL برای شما قرار داده بودیم و نحوه ارتباط با دیتابیس Mysql را بیان کرده بودیم در این آموزش یک مثال ساده و کاربردی از دیتابی Mysql در برنامه نویسی اندروید برای شما قرار میدهیم با ما همراه باشید.
ابتدای کار به کدهای PHP خواهیم پرداخت.
یک فایل PHP به نام DatabaseConfig.php ایجاد کرده و کدهای زیر را در آن قرار دهید.
1 2 3 4 5 6 | <?php $HostName = "localhost"; $HostUser = "YOUR USER NAME"; $HostPass = "YOUR PASSWORD"; $DatabaseName = "YOUR DATABASE NAME"; ?> |
در بالا باید اطلاعات مربوط به دیتابیس شامل نام کاربر و پسورد آن و نام دیتابیس را در بالا قرار دهید (بعدا از این فایل در کد php استفاده می کنیم و به گونه ای امنیت این فایل بالا است.)
یک فایل PHP دیگر به نام get_data.php ایجاد کنید و کدهای زیر را در آن قرار دهید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?php include 'DatabaseConfig.php' ; $con = mysqli_connect($HostName,$HostUser,$HostPass,$DatabaseName); $name = $_POST['name']; $email = $_POST['email']; $Sql_Query = "insert into GetDataTable (name,email) values ('$name','$email')"; if(mysqli_query($con,$Sql_Query)){ echo 'Data Submit Successfully'; } else{ echo 'Try Again'; } mysqli_close($con); ?> |
در بالا ابتدا فایل DatabaseConfig را به پروژه اضافه کردیم تا از آن استفاده کنیم سپس یک Connection به دیتابیس ایجاد کردیم سپس دو مقدار را به دیتابیس Insert کردیم.
خب حالا کد های اندروید مربوط به آن را قرار میدهیم.
ابتدا وارد فایل AndroidManifest.xml شده و دسترسی اینترنت را به آن اضافه کنید.
1 | <uses-permission android:name="android.permission.INTERNET"/> |
حالا باید در layout خود که در اینجا نام آن activity_main.xml است کدهای زیر را قرار دهید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" 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="com.androidjson.insertdata_androidjsoncom.MainActivity"> <TextView android:text="Submit Data to Server" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:id="@+id/textView" android:gravity="center" android:textSize="20dp" android:textColor="#000000" /> <EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:inputType="textPersonName" android:hint="Enter Name" android:ems="10" android:layout_below="@+id/textView" android:layout_centerHorizontal="true" android:layout_marginTop="30dp" android:id="@+id/editText2" android:gravity="center"/> <EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:inputType="textEmailAddress" android:ems="10" android:hint="Enter Email" android:layout_marginTop="46dp" android:id="@+id/editText3" android:layout_below="@+id/editText2" android:layout_centerHorizontal="true" android:gravity="center" /> <Button android:text="Submit Data" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@+id/editText3" android:layout_centerHorizontal="true" android:layout_marginTop="38dp" android:id="@+id/button" /> </RelativeLayout> |
در بالا دو EditText به منظور دریافت ورودی از کاربر قرار گرفته شده است و بعد از کلیک بروی دکمه داده ها از Edittext دریافت و به سمت سرور Post می شود.
وارد فایل Build.gradle از نوع Module شده و کتاب خانه زیر را اضافه کنید.
1 | compile 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2' |
پروژه را sync کنید.
خب حالا وارد اکتیویتی مربوط به activity_main.xml شده و کدهای زیر را در آن قرار دهید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | package com.androidjson.insertdata_androidjsoncom; import android.os.AsyncTask; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.ClientProtocolException; 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 java.io.IOException; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { String ServerURL = "http://programchi.ir/get_data.php" ; EditText name, email ; Button button; String TempName, TempEmail ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); name = (EditText)findViewById(R.id.editText2); email = (EditText)findViewById(R.id.editText3); button = (Button)findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { GetData(); InsertData(TempName, TempEmail); } }); } public void GetData(){ TempName = name.getText().toString(); TempEmail = email.getText().toString(); } public void InsertData(final String name, final String email){ class SendPostReqAsyncTask extends AsyncTask<String, Void, String> { @Override protected String doInBackground(String... params) { String NameHolder = name ; String EmailHolder = email ; List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); nameValuePairs.add(new BasicNameValuePair("name", NameHolder)); nameValuePairs.add(new BasicNameValuePair("email", EmailHolder)); try { HttpClient httpClient = new DefaultHttpClient(); HttpPost httpPost = new HttpPost(ServerURL); httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); HttpResponse httpResponse = httpClient.execute(httpPost); HttpEntity httpEntity = httpResponse.getEntity(); } catch (ClientProtocolException e) { } catch (IOException e) { } return "Data Inserted Successfully"; } @Override protected void onPostExecute(String result) { super.onPostExecute(result); Toast.makeText(MainActivity.this, "Data Submit Successfully", Toast.LENGTH_LONG).show(); } } SendPostReqAsyncTask sendPostReqAsyncTask = new SendPostReqAsyncTask(); sendPostReqAsyncTask.execute(name, email); } } |
ابتدای امر بگم که url بالا اصلا وجود ندارد پس باید بروی سرور خودتان آن را تست کنید یا از مجازی سازهایی مثل xampp و wamp استفاده کنید یک متد به نام InsertData داریم که دو ورودی می گیرد بعد از آن ما یک NameValuePair ایجاد می کنیم و دو مقدار پارامتری از url خواهند شد یعنی به این شکل در خواهند آمد.
1 2 | name= "یک نامی" email = "یک ایمیلی" |
در بالا از کلاس Async برای انجام Request به صورت synchronize استفاده شده است و عمل Request اصلی توسط HttpClient انجام می شود.
این آموزش هم به پایان رسید.
موفق و پیروز باشید.