:: เขียนแอพ Android ติดต่อ MySQL Server ด้วย Android Studio

เขียนแอพ Android ติดต่อ MySQL Server ด้วย Android Studio

เปิดโปรแกรม Android Studio ขึ้นมาแล้วเลือก สร้างโปรเจคต์ วึ่งแอดมินตั้งชื่อว่า MyApplication ส่วน Company เป็น tlc

สร้างโปรเจคต์

สร้างโปรเจคต์

เลือก เวอร์ชัน

Android SDK

Android SDK

เลือก Blank Activity

Blank Activity

Blank Activity

หลังจากนั้นกด Next ไปเรื่อยๆจนจบขั้นตอน

เพิ่ม textbox และ button

ใครที่ตั้งชื่อเหมือนแอดมินก็ให้เปิดไปที่ activity_main_my.xml แต่ถ้าใครตั้งชื่อไม่เหมือนก็ไปหาใน app > src > layout แล้วเพิ่มโค้ดเข้าไปตามนี้

<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”
xmlns:tools=”http://schemas.android.com/tools”
android:layout_width=”fill_parent”
android:layout_height=”fill_parent”
android:orientation=”vertical”
tools:context=”.MyActivity”>

<TextView
android:layout_width=”fill_parent”
android:layout_height=”wrap_content”
android:text=”Connect To Mysql Example” />
<EditText
android:id=”@+id/txt_hn”
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:hint=”HN” >
</EditText>
<EditText
android:id=”@+id/txt_name”
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:hint=”Name-Lastname” />
<EditText
android:id=”@+id/txt_age”
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:hint=”Age” />
<LinearLayout
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:orientation=”horizontal” >
<Button
android:id=”@+id/btn_insert”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:text=”Insert” />
<Button
android:id=”@+id/btn_select”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:text=”Select” />
<Button
android:id=”@+id/btn_update”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:text=”Update” />
<Button
android:id=”@+id/btn_delete”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:text=”Delete” />
</LinearLayout>
<ScrollView
android:id=”@+id/scrollView1″
android:layout_width=”match_parent”
android:layout_height=”wrap_content” >
<LinearLayout
android:layout_width=”match_parent”
android:layout_height=”match_parent” >
<TextView
android:id=”@+id/tv_res”
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:text=”” />
</LinearLayout>
</ScrollView>

</LinearLayout>

ในหน้า MyActivity.java เพิ่ม Code ดังต่อไปนี้

package tlc.myapplication;

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.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class MyActivity extends Activity implements OnClickListener {

Button btn_select;
Button btn_insert;
Button btn_update;
Button btn_delete;

TextView tv_res;
EditText txt_hn;
EditText txt_name;
EditText txt_age;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
// ตั้งค่าตัวแปล View
tv_res = (TextView)findViewById(R.id.tv_res);
txt_hn = (EditText)findViewById(R.id.txt_hn);
txt_name = (EditText)findViewById(R.id.txt_name);
txt_age = (EditText)findViewById(R.id.txt_age);

btn_select = (Button)findViewById(R.id.btn_select);
btn_select.setOnClickListener(this);

btn_insert = (Button)findViewById(R.id.btn_insert);
btn_insert.setOnClickListener(this);

btn_update = (Button)findViewById(R.id.btn_update);
btn_update.setOnClickListener(this);

btn_delete = (Button)findViewById(R.id.btn_delete);
btn_delete.setOnClickListener(this);
}

@Override
public void onClick(View v){
switch(v.getId()){
case R.id.btn_select:
{
select();
break;
}
case R.id.btn_insert:
{
insert();
break;
}
case R.id.btn_update:
{
update();
break;
}
case R.id.btn_delete:
{
delete();
break;
}
}
}

public void clsText(){
txt_hn.setText(“”);
txt_name.setText(“”);
txt_age.setText(“”);
}

public void insert(){
try{
String hn = txt_hn.getText().toString().trim();
String name = txt_name.getText().toString().trim();
String age = txt_age.getText().toString().trim();
if ( hn.equals(“”) || name.equals(“”) || age.equals(“”) ){
return ;
}
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair(“isAdd”,”true”));
nameValuePairs.add(new BasicNameValuePair(“hn”,hn));
nameValuePairs.add(new BasicNameValuePair(“name”,name));
nameValuePairs.add(new BasicNameValuePair(“age”,age));
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(“http://localhost/testAndroidMysql/php_set_data.php”);//Change IP to you WebServer
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs,”UTF-8″));
httpclient.execute(httppost);
clsText();
}catch(Exception e){
Log.d(“log_err”, “Error in http connection ” + e.toString());
}
}

public void update(){
// Your update algorithm
Toast.makeText(getApplicationContext(), “update”,Toast.LENGTH_SHORT).show();
}

public void delete(){
// Your delete algorithm
Toast.makeText(getApplicationContext(), “delete”,Toast.LENGTH_SHORT).show();
}

public void select() {
tv_res.setText(“”);
InputStream is = null;
String js_result = “”;
try {
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(“http://localhost/testAndroidMysql/php_get_data.php”);
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
} catch (Exception e) {
Log.d(“log_err”, “Error in http connection ” + e.toString());
}
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(is,”UTF-8″));
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line);
}
is.close();
js_result = sb.toString();
} catch (Exception e) {
Log.e(“log_tag”, “Error converting result ” + e.toString());
}
try {
final JSONArray jArray = new JSONArray(js_result);
for (int i = 0; i < jArray.length(); i++) {
JSONObject jo = jArray.getJSONObject(i);
String hn = jo.getString(“hn”);
String name = jo.getString(“name”);
String age = String.valueOf(jo.getInt(“age”));
String date_serv = jo.getString(“date_serv”);
Log.d(“log”,hn+”,”+name+”,”+age+”,”+date_serv);
tv_res.append(hn+”,”+name+”,”+age+”,”+date_serv+”\n”);
}
} catch (JSONException e) {
Log.e(“log_tag”, “Error parsing data ” + e.toString());
}
}
}

สุดท้ายไปที่ AndroidManifest.xml เพิ่มสิทธิ์ในการเข้าถึง Internet

<uses-permission android:name=”android.permission.INTERNET” />

ซึ่งตอนนี้เราได้สร้าง Application ฝั่ง Android เรียบร้อยแล้ว
ขั้นตอนต่อไปเราต้องไปสร้าง Application ฝั่ง Server ก็คือ ไฟล์ PHP ของเรานั่นเองครับ
ในส่วนของไฟล์ PHP สร้างเป็น 2 ไฟล์คือ
- ไฟล์ php_set_data.php ทำหน้าที่ insert 

<?php
header(“content-type:text/javascript;charset=utf-8″);
$con=mysql_connect(‘localhost’,’xxxxx’,’xxxxx’)or die(mysql_error());   // เปลี่ยน localhost เป็น ip ของ mysql server
mysql_select_db(‘test’)or die(mysql_error());
mysql_query(“SET NAMES UTF8″);
if (isset($_POST)){
if($_POST[‘isAdd’]==’true’){
$hn=$_POST[‘hn’];
$name=$_POST[‘name’];
$age = $_POST[‘age’];
$date = date(‘Y-m-d’);
$sql=”INSERT INTO `patient` (`hn`, `name`, `age`, `date_serv`) VALUES (‘$hn’, ‘$name’, ‘$age’, ‘$date’)”;
mysql_query($sql);
}
}
mysql_close();
?>

-ไฟล์ php_get_data.php ทำหน้าที่ select

<?php
header(“content-type:text/javascript;charset=utf-8″);
$con=mysql_connect(‘localhost’,’xxxx’,’xxxx’)or die(mysql_error());  // เปลี่ยน localhost เป็น ip ของ mysql server
mysql_select_db(‘test’)or die(mysql_error());
mysql_query(“SET NAMES UTF8″);
$sql=”SELECT * FROM patient”;
$res=mysql_query($sql);
while($row=mysql_fetch_assoc($res)){
$output[]=$row;
}
print(json_encode($output));
mysql_close();
?>

จากนั้นไปที่ Mysql Server ให้ท่านสร้าง database ชื่อ test ขึ้นมา
และให้ create table ชื่อ patient ด้วยคำสั่งดังนี้

DROP TABLE IF EXISTS `patient`;
CREATE TABLE `patient` (
`hn` varchar(9) DEFAULT ”,
`name` varchar(100) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
`date_serv` varchar(80) DEFAULT ‘0000-00-00′
) ENGINE=InnoDB DEFAULT CHARSET=tis620;

— —————————-
— ทดสอบใส่ข้อมูล 2 row
— —————————-
INSERT INTO `patient` VALUES (‘333′, ‘กกกกก’, ’12’, ‘0000-00-00′);
INSERT INTO `patient` VALUES (‘222′, ‘aasss’, ’45’, ‘0000-00-00′);

หลังจากนั้นลองรันโปรเจคต์ดูจะได้ตามภาพ

Android ติดต่อ MySQL Server

Android ติดต่อ MySQL Server

ที่มา android4health

Tags :
- 2014-06-18 5:14:27 โพสต์โดย : hitech คนอ่าน 7,467 views คน