Ver 1.0 – 2016, FIT - HCMUP
Lab 09: SQLite
1 Thao tác với CSDL Sqlite
1.1
Tạo/Mở/Đóng CSDL
//Tạo mới CSDL
SQLiteDatabase db = null;
public void CreateDatabase()
{
db = openOrCreateDatabase("QLSV.db", MODE_PRIVATE, null);
}
public void CloseDatabase()
{
if(db.isOpen())
db.close();
}
QLSV.db là tên database lưu trong thư mục: /data/data/
/databases
1.2
Xóa CSDL
public void DeleteDatabase()
{
String thongbao = "";
if(deleteDatabase("QLSV.db"))
{
thongbao = "Đã xóa thành công QLSV.db!!!";
}
else
{
thongbao = "Không thể xóa QLSV.db!";
}
Toast.makeText(MainActivity.this, thongbao, Toast.LENGTH_SHORT).show();
}
Ths. Lương Trần Hy Hiến, KHOA CNTT – TRƯỜNG ĐH SƯ PHẠM TP. HCM
1
Ver 1.0 – 2016, FIT - HCMUP
1.3
Lab 09: SQLite
Tạo bảng lớp
public void CreateTableLop()
{
String sql = "CREATE TABLE Lop(MaLop TEXT PRIMARY KEY, "
+ "TenLop TEXT, siso INTEGER) ";
db.execSQL(sql);
}
Lưu ý: Tất cả các thao tác lệnh SQL bao gồm: CREATE, INSERT, UPDATE, DELETE, SELECT
đều có thể thực hiện thông qua phương thức execSQL. Tuy nhiên một số thao tác có phương thức
riêng.
1.4
Class Lop
Để thuận tiện cho các thao tác quản lý, tạo class Lop tương ứng với bảng Lop.
package com.mobileapp.hienlth.mysqlite;
/**
* Created by HIENLTH on 5/27/2016.
*/
public class Lop {
public Lop(String maLop, String tenLop) {
MaLop = maLop;
TenLop = tenLop;
}
public Lop(String maLop, String tenLop, int siSo) {
MaLop = maLop;
SiSo = siSo;
TenLop = tenLop;
}
private String MaLop;
private String TenLop;
private int SiSo;
@Override
public String toString() {
return getMaLop() + " : " + getTenLop() + " : " + getSiSo() + "SV";
}
Ths. Lương Trần Hy Hiến, KHOA CNTT – TRƯỜNG ĐH SƯ PHẠM TP. HCM
2
Ver 1.0 – 2016, FIT - HCMUP
Lab 09: SQLite
public String getMaLop() {
return MaLop;
}
public void setMaLop(String maLop) {
MaLop = maLop;
}
public String getTenLop() {
return TenLop;
}
public void setTenLop(String tenLop) {
TenLop = tenLop;
}
public int getSiSo() {
return SiSo;
}
public void setSiSo(int siSo) {
SiSo = siSo;
}
}
1.5
Thêm lớp
public void AddLop(Lop lop)
{
ContentValues values = new ContentValues();
try {
values.put("MaLop", lop.getMaLop());
values.put("TenLop", lop.getTenLop());
values.put("SiSo", lop.getSiSo());
}catch (Exception ex)
{
Toast.makeText(MainActivity.this, ex.getMessage(), Toast.LENGTH_SHORT).show();
}
if(db.insert("Lop", null, values) == -1)
Toast.makeText(MainActivity.this, "Thất bại", Toast.LENGTH_SHORT).show();
Ths. Lương Trần Hy Hiến, KHOA CNTT – TRƯỜNG ĐH SƯ PHẠM TP. HCM
3
Ver 1.0 – 2016, FIT - HCMUP
Lab 09: SQLite
else
Toast.makeText(MainActivity.this, "Thành công!", Toast.LENGTH_SHORT).show();
}
1.6
Sửa lớp
public void UpdateLop(Lop lop)
{
ContentValues values = new ContentValues();
values.put("TenLop", lop.getTenLop());
values.put("SiSo", lop.getSiSo());
db.update("Lop", values, "MaLop=?", new String[]{lop.getMaLop()});
}
1.7
Xóa lớp
public void XoaLop(String MaLop)
{
//Xóa tất cả
if(MaLop == null)
db.delete("Lop", null, null);
else
db.delete("Lop", "MaLop=?",
new String[]{MaLop});
}
1.8
Truy vấn dữ liệu
Sử dụng đối tượng Cursor để duyệt qua tập kết quả truy vấn:
public Cursor query (String table, String[] columns, String selection, String[]
selectionArgs, String groupBy, String having, String orderBy, String limit)
trong đó:
table : tên bảng truy vấn
columns : danh sách các cột cần lấy.
selection : điều kiện lọc (ví dụ: TenCot = ? hay TenCot1 = ? AND TenCot2 = ?)
selectionArgs : tham số lọc
groupBy : biểu thức GROUPBY
having : biểu thức HAVING
Ths. Lương Trần Hy Hiến, KHOA CNTT – TRƯỜNG ĐH SƯ PHẠM TP. HCM
4
Ver 1.0 – 2016, FIT - HCMUP
Lab 09: SQLite
orderBy : biểu thức ORDERBY
limit : số dòng kết quả cần giới hạn.
Các thao tác:
.moveToFirst() : về record đầu
.moveToLast() : về record cuối
.moveToNext() : ra record kế
.isAfterLast() : sau cùng???
.isBeforeFirst() : đầu tiên???
2 Thực nghiệm
2.1
Thiết kế giao diện
2.2
Xử lý sự kiện OnCreate
CreateDatabase();
//Tạo bảng cho lần chạy đầu tiên
// CreateTableLop();
Ths. Lương Trần Hy Hiến, KHOA CNTT – TRƯỜNG ĐH SƯ PHẠM TP. HCM
5