Android: (Delete) การลบข้อมูลบน Mysql
|สวัสดีครับ บทความนี้ผมมาอธิบายต่อจากบทความในกลุ่มการจัดการฐานข้อมูลบน Mysql (หลังจากบทความที่แล้ว Update) ซึ้งผมแบ่งเนื้อหามาอธิบายทีละเล็กน้อยเนื้อหาจะได้ไม่เยอะจนเกินไป ในส่วนนี้คือการลบข้อมูล(Delete) ในฐานข้อมูล Mysql ดูบทความที่เกี่ยวข้องก่อนหน้าซักหน่อยครับ
– เชื่อมต่อฐานข้อมูล Mysql บนเซิฟเวอร์
– (Insert) การเพิ่มข้อมูลบน Mysql
– (Update) การแก้ไขข้อมูลบน Mysql
!! ควรย้อนไปอ่านบทความ “เชื่อมต่อฐานข้อมูล Mysql บนเซิฟเวอร์” ก่อนนะครับ
โค้ดตัวอย่าง
สามารถดาวน์โหลดโปรเจ็คตัวอย่างได้ที่ -> MysqlExample(Delete)
!! ใช้ฐานข้อมูลชุดเดิมจากบทความ เชื่อมต่อฐานข้อมูล Mysql บนเซิฟเวอร์
อธิบายฐานข้อมูล
ก่อนจะเข้าเรื่องเตือนความจำกันซักหน่อยนะ อธิบายฐานข้อมูลของตัวอย่างที่แล้วๆมานะครับ ในฐานข้อมูลมี 1 ตารางชื่อว่า member โดยมีโครงสร้างของตารางตามที่แสดงใน รูปที่ 1 และ มีข้อมูลตัวอย่างในตารางตาม รูปที่ 2
รูปที่ 1 แสดงรายละเอียดตาราง member
รูปที่ 2 ตัวอย่างข้อมูลในตาราง member
อธิบายโค้ดตัวอย่าง
Delete (ลบข้อมูล)
delete_data.php
ไฟล์นี้ทำการรับค่า id ผ่าน http post (แอนดอร์ยส่งมา) เพื่อที่จะนำมาลบข้อมูลจากตาราง member ตาม id ที่เราส่งมา
!! ไฟล์นี้อยู่ในเซิฟเวอร์นะครับ หรือ localhost
!! ในไฟล์นี้ผู้อ่านต้องทำการเปลี่ยน รายละเอียดในการเชื่อมต่อฐานข้อมูลเป็นของตัวเองในส่วนที่ผมไฮไลท์สีแดงไว้
<?php
header("content-type:text/javascript;charset=utf-8");
$con=mysql_connect('mysql_server','mysql_username','mysql_pass')or die(mysql_error());
mysql_select_db('db_name')or die(mysql_error());
mysql_query("SET NAMES UTF8");
$id = $_POST['id'];
$sql="DELETE FROM member WHERE id = $id";
$res=mysql_query($sql);
mysql_close();
?>
Update_Activity.java
ในตัวอย่างการลบข้อมูลผมได้เพิ่มปุ่ม Delete ในคลาส Update_Activity (ใช้ Activity เดี่ยวกับการ Update ซะเลย) และทำการเรียกฟังก์ชั่น confirmDialog() เมื่อมีการกดปุ่ม Delete
case R.id.btn_Delete:
confirmDialog();
และเมื่อฟังก์ชั่น confirmDialog() ทำงานก็จะมี Dialog แสดงข้อความว่าเราต้องการจะลบข้อมูลจริงหรือไม่และมีปุ่ม “ตกลง” และ “ยกเลิก” ในกรณีที่เราเลือก “ตกลง” จะเรียกฟังก์ชั่น deleteUser() ของคลาส MysqlConnector ให้ทำงาน (ก็คือให้ลบ user) แต่ในกรณีที่เลือก “ยกเลิก” Dialog ดังกล่าวก็ขะหายไป
private void confirmDialog(){
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
// set title
alertDialogBuilder.setTitle("ลบข้อมูล");
// set dialog message
alertDialogBuilder
.setMessage("เลือกตกลงเพื่อยืนยันการลบข้อมูล")
.setCancelable(false)
.setNegativeButton("ตกลง",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int click_id) {
MysqlConnector.deleteUser(id);
Update_Activity.this.finish();
}
})
.setPositiveButton("ยกเลิก",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int id) {
// if this button is clicked, just close
// the dialog box and do nothing
dialog.cancel();
}
});
// create alert dialog
AlertDialog alertDialog = alertDialogBuilder.create();
// show it
alertDialog.show();
}
MysqlConnector.java
ในคลาส MysqlConnector มีการเพิ่มฟังก์ชั่น deleteUser() เพื่อลบข้อมูลในตาราง member (รู้สึกขัดใจกับตารางชื่อ member แต่ฟังก์ชั่นชื่อ deleteUser() แต่ก็ขี้เกียจแก้จัง) โดยส่วนแรกจะทำการเตรียมพารามิเตอร์เพื่อส่งไปยังเซิฟเวอร์โดยมีพารามิเตอร์ตัวเดียวคือ id
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("id",id));
ขั้นตอนต่อไปคือส่ง Http post ไปยัง delete_data.php ก็เป็นอันเสร็จเรียบร้อย
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("yout_url/delete_data.php");
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs,"UTF-8"));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
สุดท้ายแล้วบนความต่อเนื่องของการเชื่อมต่อและการใช้คำสั่งพื้นฐานกับฐานข้อมูล Mysql ก็จบลงเพียงเท่านี้ ซึ้งหลักการสำคัญคือเราไม่ได้ใช้แอนดอร์ยในการเชื่อมต่อกับฐานข้อมูล Mysql โดยตรงแต่เราเรียกใช้ php ให้ทำงานและอ่านผลลัพธ์นั้นส่งกลับมาในรูปของ JSON อีกทีนึงโดยหวังงว่าผู่ที่พบเจอบทความนี้จะสามารถนำไปประยุกต์ใช้ได้ครับ