Nội dung của tài liệu trình bày về thao tác với CSDL Sqlite, tạo/mở/đóng CSDL với CSDL Sqlite, xóa CSDL, tạo bảng lớp, class Lop, thêm lớp, sửa lớp, xóa lớp, truy vấn dữ liệu, thực nghiệm, thiết kế giao diện, xử lý sự kiện OnCreate, hàm load dữ liệu đổ vào ListView, sự kiện click lên một Item của ListView, xử lý nút Thêm, xử lý nút Xóa và xử lý nút sửa.
Ver 1.0 – 2016, FIT - HCMUP Lab 09: SQLite Thao tác với CSDL Sqlite 1.1 Tạo/Mở/Đóng CSDL //Tạo CSDL SQLiteDatabase db = null; public void CreateDatabase() { db = openOrCreateDatabase("QLSV.db", MODE_PRIVATE, null); } public void CloseDatabase() { if(db.isOpen()) db.close(); } QLSV.db tên database lưu 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 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 thao tác lệnh SQL bao gồm: CREATE, INSERT, UPDATE, DELETE, SELECT thực thơng qua phương thức execSQL Tuy nhiên số thao tác có phương thức riêng 1.4 Class Lop Để thuận tiện cho 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 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 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 if(MaLop == null) db.delete("Lop", null, null); else db.delete("Lop", "MaLop=?", new String[]{MaLop}); } 1.8 Truy vấn liệu Sử dụng đối tượng Cursor để duyệt qua tập kết truy vấn: public Cursor query (String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit) đó: table : tên bảng truy vấn columns : danh sách 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 Ver 1.0 – 2016, FIT - HCMUP Lab 09: SQLite orderBy : biểu thức ORDERBY limit : số dòng kết cần giới hạn Các thao tác: moveToFirst() : record đầu moveToLast() : record cuối moveToNext() : record kế isAfterLast() : sau cùng??? isBeforeFirst() : đầu tiên??? Thực nghiệm 2.1 Thiết kế giao diện 2.2 Xử lý kiện OnCreate CreateDatabase(); //Tạo bảng cho lần chạy // CreateTableLop(); Ths Lương Trần Hy Hiến, KHOA CNTT – TRƯỜNG ĐH SƯ PHẠM TP HCM Ver 1.0 – 2016, FIT - HCMUP Lab 09: SQLite //Thêm vài sinh viên cho lần chạy //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 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 record 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 Item 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() + ""); } }); Ths Lương Trần Hy Hiến, KHOA CNTT – TRƯỜNG ĐH SƯ PHẠM TP HCM Ver 1.0 – 2016, FIT - HCMUP 2.5 Lab 09: SQLite 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(); } }); Ths Lương Trần Hy Hiến, KHOA CNTT – TRƯỜNG ĐH SƯ PHẠM TP HCM ... 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 Ver 1.0 – 2016, FIT - HCMUP Lab 09: SQLite else... giao di? ??n 2.2 Xử lý kiện OnCreate CreateDatabase(); //Tạo bảng cho lần chạy // CreateTableLop(); Ths Lương Trần Hy Hiến, KHOA CNTT – TRƯỜNG ĐH SƯ PHẠM TP HCM Ver 1.0 – 2016, FIT - HCMUP Lab 09: SQLite. ..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