1. Trang chủ
  2. » Công Nghệ Thông Tin

Lập trình di động - Lab 09: SQLite

7 13 2

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 7
Dung lượng 800,2 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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.

Trang 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/<package>/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();

}

Trang 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;

public String toString() {

return getMaLop() + " : " + getTenLop() + " : " + getSiSo() + "SV";

}

Trang 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();

Trang 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 đó:

Trang 5

orderBy : biểu thức ORDERBY

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();

Trang 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() {

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() + "");

}

});

Trang 7

2.5 Xử lý nút Thêm

btnThem.setOnClickListener(new View.OnClickListener() {

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() {

public void onClick(View v) {

XoaLop(txtMaLop.getText().toString());

loadDBToListView();

}

});

2.7 Xử lý nút Sửa

btnSua.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {

Lop lop = new Lop(txtMaLop.getText().toString(),

txtTenLop.getText().toString(),

Integer.parseInt(txtSiSo.getText().toString()));

UpdateLop(lop);

loadDBToListView();

}

});

Ngày đăng: 20/05/2021, 03:41

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w