Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Android

วิธีลบตาราง (DROP TABLE) ใน Android SQLite

บทนำ: SQLite ใน Android

SQLite เป็นฐานข้อมูล SQL แบบโอเพนซอร์ส ที่จัดเก็บข้อมูลในไฟล์ข้อความบนอุปกรณ์ Android มีการรองรับ SQLite ในตัว รองรับคุณสมบัติของ Relational Database ทั้งหมด

ตัวอย่าง: การลบตารางด้วย DROP TABLE

ขั้นตอนที่ 1: สร้างโปรเจกต์ใหม่ใน Android Studio

ไปที่ File → New Project แล้วกรอกข้อมูลที่จำเป็น

ขั้นตอนที่ 2: ออกแบบ Layout เรียบง่าย (res/layout/activity_main.xml)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:orientation="vertical">

    <EditText
        android:id="@+id/name"
        android:layout_width="match_parent"
        android:hint="Enter Name"
        android:layout_height="wrap_content" />

    <EditText
        android:id="@+id/salary"
        android:layout_width="match_parent"
        android:inputType="numberDecimal"
        android:hint="Enter Salary"
        android:layout_height="wrap_content" />

    <Button
        android:id="@+id/save"
        android:text="Save"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>

ขั้นตอนที่ 3: เขียนโค้ด MainActivity.java

package com.example.andy.myapplication;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    Button save;
    EditText name, salary;

    @Override
    protected void onCreate(Bundle readdInstanceState) {
        super.onCreate(readdInstanceState);
        setContentView(R.layout.activity_main);

        final DatabaseHelper helper = new DatabaseHelper(this);
        name = findViewById(R.id.name);
        salary = findViewById(R.id.salary);

        findViewById(R.id.save).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (!name.getText().toString().isEmpty() && !salary.getText().toString().isEmpty()) {
                    if (helper.insert(name.getText().toString(), salary.getText().toString())) {
                        Toast.makeText(MainActivity.this, "Inserted", Toast.LENGTH_LONG).show();
                    } else {
                        Toast.makeText(MainActivity.this, "NOT Inserted", Toast.LENGTH_LONG).show();
                    }
                } else {
                    name.setError("Enter NAME");
                    salary.setError("Enter Salary");
                }
            }
        });
    }
}

ขั้นตอนที่ 4: สร้าง DatabaseHelper.java - ใช้ DROP TABLE

package com.example.andy.myapplication;

import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;
import java.io.IOException;

class DatabaseHelper extends SQLiteOpenHelper {
    public static final String DATABASE_NAME = "salaryDatabase3";
    public static final String CONTACTS_TABLE_NAME = "SalaryDetails";

    public DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        try {
            db.execSQL("create table " + CONTACTS_TABLE_NAME + 
                "(id INTEGER PRIMARY KEY, name text, salary text)");
        } catch (SQLiteException e) {
            try { throw new IOException(e); } 
            catch (IOException e1) { e1.printStackTrace(); }
        }
    }

    // onUpgrade ใช้ DROP TABLE เมื่ออัปเกรดเวอร์ชันฐานข้อมูล
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // ลบตารางเก่าถ้ามีอยู่ แล้วสร้างใหม่
        db.execSQL("DROP TABLE IF EXISTS " + CONTACTS_TABLE_NAME);
        onCreate(db);
    }

    public boolean insert(String s, String s1) {
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues contentValues = new ContentValues();
        contentValues.put("name", s);
        contentValues.put("salary", s1);
        db.insert(CONTACTS_TABLE_NAME, null, contentValues);
        return true;
    }
}

คำอธิบาย DROP TABLE

คำสั่ง SQL สำหรับลบตาราง:

DROP TABLE IF EXISTS table_name
  • DROP TABLE - ลบตารางออกจากฐานข้อมูลอย่างถาวร (รวมข้อมูล โครงสร้าง Index Trigger ทั้งหมด)
  • IF EXISTS - ป้องกัน Error ถ้าตารางไม่มีอยู่ (Best Practice)
  • ใน Android ใช้มักใน onUpgrade() เมื่อเปลี่ยนโครงสร้างตาราง (Schema Migration)

การใช้งาน DROP TABLE แบบ Manual

หากต้องการลบตารางด้วยตนเอง (ไม่ใช่ใน onUpgrade):

public void dropTable() {
    SQLiteDatabase db = this.getWritableDatabase();
    db.execSQL("DROP TABLE IF EXISTS " + CONTACTS_TABLE_NAME);
    // ต้องสร้างตารางใหม่ถ้าต้องการใช้ต่อ
    onCreate(db);
}

⚠️ ข้อควรระวัง

  • DROP TABLE ลบข้อมูลถาวร - ไม่สามารถ Undo ได้
  • ใน Production ควรใช้ Migration (ALTER TABLE) แทน เพื่อรักษาข้อมูล
  • ใช้ DROP TABLE เฉพาะตอน Development หรือ Reset ข้อมูลทุกอย่าง

คำสั่งที่เกี่ยวข้อง

  • DROP TABLE table_name - ลบตาราง (Error ถ้าไม่มี)
  • DROP TABLE IF EXISTS table_name - ลบถ้ามี (ปลอดภัยกว่า)
  • DELETE FROM table_name - ลบข้อมูลทั้งหมด แต่เก็บโครงสร้างตารางไว้