Cấp bậc tác giả:

JAVA

Hướng dẫn lập trình cơ bản với Android - Phần 7

Được viết bởi QuangIT ngày 23/09/2012 lúc 02:58 PM
Trong bài hôm nay mình sẽ giới thiệu với các bạn cơ sở dữ liệu trên Android - SQLiteDatabase.
  • 0
  • 9445

Hướng dẫn lập trình cơ bản với Android - Phần 7

Trong bài hôm nay mình sẽ giới thiệu với các bạn cơ sở dữ liệu trên Android - SQLiteDatabase. 

Giới thiệu SQLite Database

Mỗi ứng dụng đều sử dụng dữ liệu, dữ liệu có thể đơn giản hay đôi khi là cả 1 cấu trúc. Trong Android thì hệ cơ sở dữ liệu được sử dụng là SQLite Database, đây là hệ thống mã nguồn mở được sử dụng rộng rãi trong các ứng dụng ( Mozilla Firefox sử dụng SQLite để lưu trữ các dữ liệu về cấu hình, iPhone cũng sử dụng cơ sở dữ liệu là SQLite).

Trong Android , cơ sở dữ liệu mà bạn tạo cho 1 ứng dụng thì chỉ ứng dụng đó có quyền truy cập và sử dụng, các ứng dụng khác thì không. Khi đã được tạo, cơ sở dữ liệu SQLite được chứa trong thư mục /data/data/<package_name>/databases .



Tiếp theo mình sẽ giới thiệu với các bạn cách tạo và sử dụng cơ sở dữ liệu SQLite . Cách tốt nhất để hiểu lý thuyết là thực hành, các bạn có thể tạo ngay 1 project trong workspace đặt tên là : SQLiteDemo. Ứng dụng này đơn giản chỉ tạo 1 cơ sở dữ liệu USER bao gồm 2 trường ( id , name ) , ngoài ra có các thao tác thêm , đọc , sửa , xóa.


Các bước thực hiện với CSDL:


1. Tạo 1 CSDL ( thông thường chỉ cần làm 1 lần )

2. Mở CSDL đó

3. Thêm giá trị vào trong table

4. Truy vấn.

5. Đóng CSDL


1. Tạo cơ sở dữ liệu.

Đầu tiên các bạn add 1 class DBAdapter để xử lý tất cả các thao tác liên quan đến CSDL.

package at.exam;


import android.content.ContentValues;

import android.content.Context;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteOpenHelper;

import android.database.sqlite.SQLiteDatabase.CursorFactory;

import android.util.Log;


public class DBAdapter {


public static final String TAG ="DBAdapter";

public static final String KEY_ID = "_id";

public static final String KEY_NAME = "name";

private DatabaseHelper mDbHelper;

private SQLiteDatabase mDB;

private static final String DATABASE_CREATE = "create table users (_id integer primary key autoincrement, "

+ "name text not null);";

private static final String DATABASE_NAME = "Database_Demo";

private static final String DATABASE_TABLE = "users";

private static final int DATABASE_VERSION = 2;

private final Context mContext;

//Tạo 1 lớp bên trong DBAdapter được extend từ lớp SQLiteOpenHelper, override 2 phương thức onCreate() và onUpgrade() để quản lý việc tạo CSDL và version của CSDL đó.

private static class DatabaseHelper extends SQLiteOpenHelper{


public DatabaseHelper(Context context, String name,

CursorFactory factory, int version) {

super(context, name, factory, version);

// TODO Auto-generated constructor stub

}


@Override

public void onCreate(SQLiteDatabase db) {

// TODO Auto-generated method stub

db.execSQL(DATABASE_CREATE);

}


@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

// TODO Auto-generated method stub

Log.i(TAG, "Upgrading DB");

db.execSQL("DROP TABLE IF EXISTS users");

onCreate(db);

}

}

public DBAdapter(Context ctx){

this.mContext = ctx;

}

//Mở CSDL

public DBAdapter open()

{

mDbHelper = new DatabaseHelper(mContext, DATABASE_NAME, null, DATABASE_VERSION);

mDB = mDbHelper.getWritableDatabase();

return this;

}

//Đóng CSDL

public void close(){

mDbHelper.close();

}

//Thêm giá trị vào CSDL

public long createUser(String name){

ContentValues inititalValues = new ContentValues();

inititalValues.put(KEY_NAME, name);

return mDB.insert(DATABASE_TABLE, null, inititalValues);

}

public boolean deleteUser(long rowId)

{

return mDB.delete(DATABASE_TABLE, KEY_ID + "=" + rowId, null) >0;

}


//Bạn có thể get toàn bộ data hoặc có thể get data theo ID ( tiện cho việc chỉnh sửa hay cập nhật thông tin của từng bản ghi).

//Còn rất nhiều các thao tác như sửa, xóa, update.... bản ghi, các bạn có thể tự phát triển.

//Tất cả các chức năng đó đều được cung cấp bởi lớp SQLiteDatabase,

//các bạn chỉ cần cụ thể hóa bằng các câu truy vấn là được.

public Cursor getAllUsers(){

return mDB.query(DATABASE_TABLE, new String[] {KEY_ID, KEY_NAME}, null, null, null, null, null);

}

}

2. Xây dựng giao diện:

users_row.xml

<?xml version="1.0" encoding="utf-8"?>

<TextView android:id="@+id/text1" xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"/>


main.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:orientation="vertical"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    >

    <ListView android:id="@+id/android:list"

          android:layout_width="wrap_content"

         android:layout_height="wrap_content"/>

   <TextView android:id="@+id/android:empty"

          android:layout_width="wrap_content"

         android:layout_height="wrap_content"

         android:text="No Notes!"/>

</LinearLayout>


3. Sử dụng CSDL

Để test CSDL mà bạn vừa tạo, các bạn có thể thêm 1 vài dòng code để thêm 1 user và hiển thị CSDL lên màn hình thông qua lớp Activity ban đầu:

Ở đây mình create 1 user thông qua câu lệnh mDB.createUser("Username"); trong lớp SQLiteActivity.java

package at.exam;


import android.app.ListActivity;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

import android.os.Bundle;

import android.widget.SimpleCursorAdapter;


public class SQLiteActivity extends ListActivity {

private DBAdapter mDB;

private Cursor mCursor;

    /** Called when the activity is first created. */

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        mDB = new DBAdapter(this);

        mDB.open();

        mDB.createUser("DOTNET GROUP A-Z");

        getData();

    }

 

    private void getData(){

     mCursor = mDB.getAllUsers();

     startManagingCursor(mCursor);

     String[] from = new String[]{DBAdapter.KEY_NAME};

     int[] to = new int[] {R.id.text1};

     SimpleCursorAdapter users = new SimpleCursorAdapter(this, R.layout.users_row, mCursor, from, to);

     setListAdapter(users);

    }

}

Bây giờ Run Application để xem:

Bài này là bài cơ sở để mình viết tiếp Phần 8: ContentProvider, các bạn chú ý theo dõi nhé.

Muốn nhiều project sử dụng chung 1 database được không? Phần 8 sẽ trả lời câu hỏi này

Nguồn bài viết: Dngaz.com

BÌNH LUẬN BÀI VIẾT

Bài viết mới nhất

LIKE BOX

Bài viết được xem nhiều nhất

HỌC HTML