[Bài 1] Hướng Dẫn Sử Dụng SQL Trên Android

[Bài 1] Hướng Dẫn Sử Dụng SQL Trên Android 

Chào các bạn!!!
Hôm nay, mình xin Hướng Dẫn Sử Dụng SQL Trên Android , ở bài 1 này mình chỉ các bạn cách viết code trên eclipce. Nó cũng không khó lắm, chỉ cần các bạn học thuộc thì có thể sử dụng nó cho sau này rồi, SQL rất quan trọng các bạn nên tìm hiểu nó, rất nhiều ứng dụng cần đến SQL để quản lý dễ hơn. Quả thật nếu thiếu SQL thì việc quản lý dữ liệu trở nên khó khăn và không có hệ thống dẫn đến nếu nhiều quá thì khó khăn trong việc tìm kiếm và truy xuất thông tin. Bây giờ chúng ta cùng nhau tìm hiểu nó.

1. Các bạn tạo 1 file java(hay nó cách khác là class) đặt tên “DBAdapter”. Các bạn có thể đặt tên tùy ý.

2. khai báo các biến:
         + khai báo tên các cột(hay còn gọi là thuộc tính):

public static final String stSoTT = "_id";//số thứ tự
public static final String stTen = "name";//tên
public static final String stEmail = "email";//địa chỉ email

          + khai báo biến tên lớp: 

private static final String stClass = "DBAdapter";

          + khai báo biến tên cơ sở dữ liệu, tên bảng cần tạo và phiên bản:

private static final String stCSDL = "MyDB";
private static final String stBang = "contacts";
private static final int iPhienBan = 1;

          + khai báo 1 biến có giá trị là câu lệnh tạo cơ sở dữ liệu:

private static final String DATABASE_CREATE = "create table contacts (_id integer primary key autoncrement, "+ "name text not null, email text not null);";

          + khai báo 1 biến context (Context thuộc android.content (android.content.Context). Context giúp chúng ta dễ dàng truy cập và tương tác tới các tài nguyên của hệ thống, các thông tin, các dịch vụ (services), các thông số cấu hình, database, wallpaper, danh bạ, cuộc gọi, kết nối, chế độ rung (vibrator). Sở dĩ hầu hết các lớp có liên quan tới UI (layout, button, textview, imageview, listview,…) đều pải super tới Context vì bản thân nó đảm nhiệm việc truy cập resource (R.id, R.layout,….). Nếu chúng ta không tham chiếu tới Context class thì đương nhiên không thể dùng tới các resources mà chúng ta đã tạo ra.) như sau:

private final Context context;

          + khai báo 2 biến có kiểu dữ liệu là : DatabaseHelper và SQLiteDatabase (Đối tượng SQLiteDatabase thể hiện một CSDL và có các phương thức giao tác với CSDL như thêm, xóa, s ửa và truy vấn dữ liệu. Để tạo CSDL, gọi hàm SQLiteDatabase.create() và cũng có thể dùng lớp SQLiteOpenHelper.) như sau:

private static DatabaseHelper DBHelper;
private static SQLiteDatabase db;

 3. Viết hàm khởi tạo 1 tham số:

public DBAdapter(Context ctx)
{
	this.context = ctx;
	DBHelper = new DatabaseHelper(context);
}

 4. Viết code tạo 1 class kế thừa SQLiteOpenHelper nó sẽ implement cho mình 3 phương thức bắt buộc đó là contructor với 4 param (mình có thể tùy chỉnh), onCreate(), onUpgrade() trong class đang viết:

private class DatabaseHelper extends SQLiteOpenHelper
{
	DatabaseHelper(Context context) // hàm khởi tạo
	{
		super(context, stCSDL, null, iPhienBan);
	}

	@Override
	public void onCreate(SQLiteDatabase db) 
	{
		try
		{
			db.execSQL(DATABASE_CREATE);//tạo 1 cơ sở dữ liệu có 1 bảng contacts
		}
		catch(SQLException e)
		{
			e.printStackTrace();
		}
			
	}

	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) 
	{
		Log.w(stClass, "Upgrading database from version "+ oldVersion + " to " + newVersion + ", which will destroy all old data");			
		db.execSQL("DROP TABLE IF EXISTS contacts");
		onCreate(db);
	}
}

 5. Viết phương thức kết nối cơ sở dữ liệu thông qua SQLException và đóng cơ sở dữ liệu:

public DBAdapter open() throws SQLException
{
	db = DBHelper.getReadableDatabase();
	return this;
}

public void close() 
{
	DBHelper.close();
}

 6. Viết hàm thêm dữ liệu vào bảng, ở đây có 2 tham số là tên và email, còn tham số số thứ tự thì tự động tăng rồi nên không cần thêm vào hàm:

public long insertContact(String name, String email) 
{
	ContentValues iv = new ContentValues();
	iv.put(stTen, name);
	iv.put(stEmail, email);
	return db.insert(stBang, null, iv);
}

 7. Viết hàm xóa dữ liệu của bảng(chỉ cần truyền vào tham số là số thứ tự là nó sẽ tự động tìm đến đúng số thứ tự đó và xóa email và tên tương ứng với nó):

public boolean deleteContact(long lCotID)
{
	return db.delete(stBang, stSoTT + "=" + lCotID, null) > 0;
}

 8. Viết hàm sửa dữ liệu: 

public boolean updateContact(long rowId, String name, String email)
{
	ContentValues args = new ContentValues();
	args.put(stTen, name);
	args.put(stTen, email);
	return db.update(stBang, args, stSoTT + "=" + rowId, null) > 0;
}

 9.  Và cuối cùng là hàm lấy tất cả dữ liệu ra và xuất ra: (Ta dùng Cursor để lưu trữ giá trị trả về của hàm dưới đây: public Cursor query (String table, String[] columns, String selection, String[] selectionArgs,String groupBy, String having, String orderBy) ) :

public Cursor getAllContacts()
{
	return db.query(stBang, new String[] {stSoTT ,  stTen, stEmail }, null, null, null, null, null);
}

 10. Qua file java chính(file chạy) vào hàm onCreate viết :
         + Đưa dữ liệu vào:

DBAdapter db = new DBAdapter(this);		
db.open();
long id = db.insertContact("tran thi teo", "quanteo@gmail.com");
id = db.insertContact("tran thi tum", "thitum@gmail.com");
db.close();

         + Lấy dữ liệu ra:

db.open();
Cursor c = db.getAllContacts();
if (c.moveToFirst())
{
	do
	{
		Toast.makeText(this, "id: " + c.getString(0) + "\n" +
				"Name: " + c.getString(1) + "\n" +
				"Email: " + c.getString(2), Toast.LENGTH_LONG).show();
	}while(c.moveToNext());
}		
		db.close();

 Vậy là đã xong, các bạn hãy làm nhiều lần cho nhớ.

Kết quả sau khi chạy chương trình là:
Untitled

Tải Code Tại Đây