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();
}
              
                                            
                                
            
 
            
                 7 trang
7 trang | 
Chia sẻ: tieuaka001 | Lượt xem: 1028 | Lượt tải: 0 
              
            Nội dung tài liệu Lập trình di động - Lab09: SQLite, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Ver 1.0 – 2016, FIT - HCMUP Lab 09: SQLite 
Ths. Lương Trần Hy Hiến, KHOA CNTT – TRƯỜNG ĐH SƯ PHẠM TP. HCM 1 
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(); 
} 
Ver 1.0 – 2016, FIT - HCMUP Lab 09: SQLite 
Ths. Lương Trần Hy Hiến, KHOA CNTT – TRƯỜNG ĐH SƯ PHẠM TP. HCM 2 
1.3 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"; 
 } 
Ver 1.0 – 2016, FIT - HCMUP Lab 09: SQLite 
Ths. Lương Trần Hy Hiến, KHOA CNTT – TRƯỜNG ĐH SƯ PHẠM TP. HCM 3 
 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(); 
Ver 1.0 – 2016, FIT - HCMUP Lab 09: SQLite 
Ths. Lương Trần Hy Hiến, KHOA CNTT – TRƯỜNG ĐH SƯ PHẠM TP. HCM 4 
 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 
Ver 1.0 – 2016, FIT - HCMUP Lab 09: SQLite 
Ths. Lương Trần Hy Hiến, KHOA CNTT – TRƯỜNG ĐH SƯ PHẠM TP. HCM 5 
 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(); 
Ver 1.0 – 2016, FIT - HCMUP Lab 09: SQLite 
Ths. Lương Trần Hy Hiến, KHOA CNTT – TRƯỜNG ĐH SƯ PHẠM TP. HCM 6 
//Thêm vài sinh viên cho lần chạy đầu tiên 
//AddLop(new Lop("10A1", "Mười A 1", 22)); 
//AddLop(new Lop("10A2", "Mười A 2", 32)); 
//AddLop(new Lop("10A3", "Mười A 3", 25)); 
adapter = new ArrayAdapter(MainActivity.this, 
 android.R.layout.simple_list_item_1, dsLop); 
lvDSLop.setAdapter(adapter); 
loadDBToListView(); 
2.3 Hàm load dữ liệu đổ vào ListView: 
//load database to ListView 
public void loadDBToListView() 
{ 
 dsLop.clear(); 
 Cursor c = db.query("Lop", null, null, null, null, null, null); 
 c.moveToFirst();//chuyển về record đầu tiên 
 String data = ""; 
 while(c.isAfterLast() == false) 
 { 
 dsLop.add(new Lop(c.getString(0).toString(), 
 c.getString(1).toString(), 
 c.getInt(2))); 
 c.moveToNext(); 
 } 
 //Toast.makeText(this, data, Toast.LENGTH_LONG).show(); 
 c.close(); 
 adapter.notifyDataSetChanged(); 
} 
2.4 Sự kiện click lên một Item của ListView 
lvDSLop.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
 @Override 
 public void onItemClick(AdapterView parent, View view, int position, long id) { 
 Lop item = (Lop)adapter.getItem(position); 
 txtMaLop.setText(item.getMaLop()); 
 txtTenLop.setText(item.getTenLop()); 
 txtSiSo.setText(item.getSiSo() + ""); 
 } 
}); 
Ver 1.0 – 2016, FIT - HCMUP Lab 09: SQLite 
Ths. Lương Trần Hy Hiến, KHOA CNTT – TRƯỜNG ĐH SƯ PHẠM TP. HCM 7 
2.5 Xử lý nút Thêm 
btnThem.setOnClickListener(new View.OnClickListener() { 
 @Override 
 public void onClick(View v) { 
 Lop lop = new Lop(txtMaLop.getText().toString(), 
 txtTenLop.getText().toString(), 
 Integer.parseInt(txtSiSo.getText().toString())); 
 Toast.makeText(MainActivity.this, lop.toString(), Toast.LENGTH_SHORT).show(); 
 dsLop.add(lop); 
 AddLop(lop); 
 loadDBToListView(); 
 } 
}); 
2.6 Xử lý nút Xóa 
btnXoa.setOnClickListener(new View.OnClickListener() { 
 @Override 
 public void onClick(View v) { 
 XoaLop(txtMaLop.getText().toString()); 
 loadDBToListView(); 
 } 
}); 
2.7 Xử lý nút Sửa 
btnSua.setOnClickListener(new View.OnClickListener() { 
 @Override 
 public void onClick(View v) { 
 Lop lop = new Lop(txtMaLop.getText().toString(), 
 txtTenLop.getText().toString(), 
 Integer.parseInt(txtSiSo.getText().toString())); 
 UpdateLop(lop); 
 loadDBToListView(); 
 } 
}); 
            Các file đính kèm theo tài liệu này:
 mad_lab09_sqlite_9173.pdf mad_lab09_sqlite_9173.pdf