বাংলায় অ্যান্ড্রয়েড সহায়িকা - Bangla Android Guide

SQL হেলপার ব্যবহার করে ডাটাবেজ তৈরী

পূর্বে আপনি যদি ঠিক করে থাকেন আপনার ডাটাবেজ দেখতে কেমন হবে, আপনাকে মেথড বাস্তবায়ন করতে হবে যা ডাটাবেজ এবং টেবিল তৈরী এবং দেখাশোনা করে। এখানে কিছু সাধারন বিবৃতি আছে যা একটি টেবিল তৈরী এবং ডিলিট করে:

private static final String TEXT_TYPE = " TEXT";
private static final String COMMA_SEP = ",";
private static final String SQL_CREATE_ENTRIES =
    "CREATE TABLE " + FeedEntry.TABLE_NAME + " (" +
    FeedEntry._ID + " INTEGER PRIMARY KEY," +
    FeedEntry.COLUMN_NAME_ENTRY_ID + TEXT_TYPE + COMMA_SEP +
    FeedEntry.COLUMN_NAME_TITLE + TEXT_TYPE + COMMA_SEP +
    ... // Any other options for the CREATE command
    " )";

private static final String SQL_DELETE_ENTRIES =
    "DROP TABLE IF EXISTS " + FeedEntry.TABLE_NAME;

ঠিক ডিভাইসের ইন্টারনাল স্টোরেজে (internal storage) সেভ করা ফাইলের মতো, অ্যান্ড্রয়েড আপনার ডাটাবেজ প্রাইভেট ডিস্ক স্পেসে জমা করে যা সংযুক্ত অ্যাপলিকেশন। আপনার ডাটা নিরাপদ, কারন বাই ডিফল্ট এই এলাকা অন্য অ্যাপলিকেশনের জন্য উন্মূক্ত নয়।

SQLiteOpenHelper ক্লাসে উপকারী এক সেট এপিআই পাওয়া যায়। যখন আপনি আপনার ডাটাবেজে রেফারেন্স পেতে এই ক্লাস ব্যবহার করেন, সিস্টেমটি ডাটাবেজ তৈরী এবং আপডেট এর সম্ভাব্য লং-রানিং অপারেশন সম্পাদন করে শুধুমাত্র যখন প্রয়োজন হয় তখন, এবং অ্যাপ শুরুর সময়ে নয়। আপনার এই সব করতে getWritableDatabase()এবং getReadableDatabase()কল করা।

নোট: কারন তারা লং-রানিং হতে পারে, নিশ্চিত হোন যে আপনি একটি ব্যাকগ্রাউন্ড থ্রেড এ getWritableDatabase()বা getReadableDatabase()কল করেছেন যেমন AsyncTask বা IntentService দিয়ে।

SQLiteOpenHelper ব্যবহার করতে একটি সাবক্লাস তৈরী করুন যা onCreate(), onUpgrade()এবং onOpen()কলব্যাক মেথডকে ওভাররাইড করে। আপনি হয়তো onDowngrade()বাস্তবায়ন করতে চান, কিন্তু এটার প্রয়োজন নেই।

উদাহরণস্বরূপ, এখানে SQLiteOpenHelperএর একটি বাস্তবায়ন আছে যা উপরে দেখানো কমান্ডের কিছু ব্যবহার করে:

public class FeedReaderDbHelper extends SQLiteOpenHelper {
    // If you change the database schema, you must increment the database version.
    public static final int DATABASE_VERSION = 1;
    public static final String DATABASE_NAME = "FeedReader.db";

    public FeedReaderDbHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(SQL_CREATE_ENTRIES);
    }
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // This database is only a cache for online data, so its upgrade policy is
        // to simply to discard the data and start over
        db.execSQL(SQL_DELETE_ENTRIES);
        onCreate(db);
    }
    public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        onUpgrade(db, oldVersion, newVersion);
    }
}

আপনার ডাটাবেজে প্রবেশ করতে, আপনার SPLiteOpenHelperএর সাবক্লাস শুরু করুন:

FeedReaderDbHelper mDbHelper = new FeedReaderDbHelper(getContext());