Giới thiệu
Hàm total_changes() trong SQLite trả về tổng số hàng đã được chèn, cập nhật hoặc xóa kể từ khi kết nối cơ sở dữ liệu được mở. Ví dụ này demo cách sử dụng hàm này.
Bước 1 & 2: Tạo dự án và Giao diện
Tương tự các ví dụ trước: có EditText tên, lương, các nút Lưu, Làm mới, Cập nhật, Xóa và ListView.
Bước 3: MainActivity.java
Code tương tự các bài trước, khởi tạo DatabaseHelper và gán adapter cho ListView.
Bước 4: DatabaseHelper.java - Sử dụng total_changes()
package com.example.andy.myapplication;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import java.util.ArrayList;
class DatabaseHelper extends SQLiteOpenHelper {
public static final String DATABASE_NAME = "salaryDatabase9";
public static final String CONTACTS_TABLE_NAME = "SalaryDetails";
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, 2);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE " + CONTACTS_TABLE_NAME +
"(id INTEGER PRIMARY KEY, name TEXT, salary REAL, datetime DEFAULT CURRENT_TIMESTAMP)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + CONTACTS_TABLE_NAME);
onCreate(db);
}
public boolean insert(String name, String salary) {
SQLiteDatabase db = getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put("name", name);
cv.put("salary", salary);
db.replace(CONTACTS_TABLE_NAME, null, cv);
return true;
}
// QUAN TRỌNG: Truy vấn total_changes()
public ArrayList<String> getAllContacts() {
SQLiteDatabase db = getReadableDatabase();
ArrayList<String> array_list = new ArrayList<>();
Cursor res = db.rawQuery("SELECT total_changes() AS fullname FROM " + CONTACTS_TABLE_NAME, null);
res.moveToFirst();
while (!res.isAfterLast()) {
if (res != null && res.getCount() > 0) {
array_list.add(res.getString(res.getColumnIndex("fullname")));
}
res.moveToNext();
}
res.close();
return array_list;
}
public boolean update(String name, String salary) {
SQLiteDatabase db = getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put("name", name);
cv.put("salary", salary);
return db.update(CONTACTS_TABLE_NAME, cv, "name = ?", new String[]{name}) > 0;
}
public boolean delete() {
getWritableDatabase().execSQL("DELETE FROM " + CONTACTS_TABLE_NAME);
return true;
}
}
Lưu ý quan trọng
total_changes()trả về cùng một giá trị cho tất cả các hàng trong kết quả truy vấn.- Giá trị này tính từ khi database connection được mở, không reset tự động.
- Khác với
changes()chỉ trả về số hàng bị ảnh hưởng bởi câu lệnh INSERT/UPDATE/DELETE gần nhất.
Kết quả

Hiển thị tổng số thay đổi (3 trong ví dụ).