SQLite databaseSQLite là 1 trong cơ sở dữ liệu SQL mã nguồn mở, nó lưu trữ dữ liệu vào trong 1 tập tin văn bản trên một thiết bị. Nó mang định đã được tích phù hợp trên sản phẩm công nghệ Android. Để truy vấn dữ liệu này, bạn không nhất thiết phải thiết lập bất kỳ loại kết nối nào đến nó như JDBC, ODBC, ... SQLite được Richard Hipp viết dưới dạng thư viện bằng ngữ điệu lập trình C.SQLite có các ưu điểm sau:Tin cậy: các chuyển động transaction (chuyển giao) nội vào cơ sở tài liệu được tiến hành trọn vẹn, không khiến lỗi khi xẩy ra sự nỗ lực phần cứngTuân theo chuẩn SQL92 (chỉ gồm một vài điểm lưu ý không hỗ trợ)Không cần thiết lập cấu hìnhKích thước lịch trình gọn nhẹ, với cấu hình đầy đầy đủ chỉ không đầy 300 kBThực hiện các thao tác dễ dàng nhanh rộng các khối hệ thống cơ sở dữ liệu khách/chủ khácKhông cần ứng dụng phụ trợPhần mềm tự do thoải mái với mã mối cung cấp mở, được chú thích rõ ràngSử dụng SQLite vào Android

Trong phần này, tôi đã hướng dẫn các bạn về cách tạo ra một database vào SQLite và các class nhằm xử lý toàn bộ các thao tác đối với SQLite.

Bạn đang xem: Kết nối cơ sở dữ liệu sqlite trong android

Sau đây, tôi vẫn lấy một ví dụ về việc lưu trữ thông tin của các sinh viên vào vào cơ sở dữ liệu SQLite.

Cấu trúc bảng Students

*

Tạo Student class

Trước hết, ta sẽ viết Student class với các phương thức khởi tạo, getter, setter:

# Student.javapackage com.framgia.androidsqlite;public class Student int id;String name;String address;String phone_number;public Student(int id, String name, String address, String phone_number) super();this.id = id;this.name = name;this.address = address;this.phone_number = phone_number;public Student(String name, String address, String phone_number) super();this.name = name;this.address = address;this.phone_number = phone_number;public int getId() return id;public void setId(int id) this.id = id;public String getName() return name;public void setName(String name) this.name = name;public String getAddress() return address;public void setAddress(String address) this.address = address;public String getPhone_number() return phone_number;public void setPhone_number(String phone_number) this.phone_number = phone_number;

Tạo SQLite Database Handler class

Tiếp theo, ta sẽ tạo nên class để cách xử lý các thao tác CRUD(create, read, update, delete) đối với database.

Đầu tiên, tạo nên một game android project (File => New apk Project)Tạo một class DatabaseHandler.java (src/package => New => Class)Class DatabaseHandler sẽ thừa kế class SQLiteOpenHelper (Đây là 1 trong những class cơ mà Android cho phép bạn xử lý các thao tác đối với database của SQLite, vày vậy chúng ta cũng có thể tạo một class khác thừa kế nó và thiết lập cấu hình việc điều khiển database theo ý mình):Sau khi kế thừa từ class SQLiteOpenHelper, việc họ cần làm tiếp theo sau đó là override lại 2 thủ tục onCreate() và onUpgradeonCreate(): Đây là chỗ để chúng ta viết đầy đủ câu lệnh chế tạo bảng. Nó được call khi database đã có tạo.onUpgrade(): Nó được gọi khi database được nâng cấp, ví dụ như chỉnh sửa cấu tạo các bảng, thêm những đổi khác cho database,..

Xem thêm: Về Khi Nắng Còn Thơm - Con Chuồn Chuồn Có Cái Cánh Xanh

# DatabaseHandler.javapackage com.framgia.androidsqlite;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteDatabase.CursorFactory;import android.database.sqlite.SQLiteOpenHelper;public class DatabaseHandler extends SQLiteOpenHelperprivate static final String DATABASE_NAME = "schoolManager";private static final int DATABASE_VERSION = 1;private static final String TABLE_NAME = "students";private static final String KEY_ID = "id";private static final String KEY_NAME = "name";private static final String KEY_ADDRESS = "address";private static final String KEY_PHONE_NUMBER = "phone_number";public DatabaseHandler(Context context) super(context, DATABASE_NAME, null, DATABASE_VERSION);
Overridepublic void onCreate(SQLiteDatabase db) String create_students_table = String.format("CREATE TABLE %s(%s INTEGER PRIMARY KEY, %s TEXT, %s TEXT, %s TEXT)", TABLE_NAME, KEY_ID, KEY_NAME, KEY_ADDRESS, KEY_PHONE_NUMBER);db.execSQL(create_students_table);
Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) String drop_students_table = String.format("DROP TABLE IF EXISTS %s", TABLE_NAME);db.execSQL(drop_students_table);onCreate(db);Tiếp theo, bọn họ sẽ viết phần lớn phương thức nhằm xử lý việc đọc, ghi đối với database.

Thêm một record mới

Chúng ta sẽ khởi tạo một thủ tục là addStudent dìm một object Student như là một trong những tham số. ContentValues được áp dụng để lưu những giá trị tương xứng với các trường vào bảng. SQLiteDatabase gồm chứa các phương thức tạo, xóa, thực thi các lệnh SQL, nó sẽ tiến hành sử dụng để insert các giá trị trường đoản cú object Student vào những trường trong bảng students.

public void addStudent(Student student) SQLiteDatabase db = this.getWritableDatabase(); ContentValues values = new ContentValues(); values.put(KEY_NAME, student.getName()); values.put(KEY_ADDRESS, student.getAddress()); values.put(KEY_PHONE_NUMBER, student.getPhone_number()); db.insert(TABLE_NAME, null, values); db.close();Truy vấn tài liệu trong bảngTa sẽ dùng Cursor nhằm lưu cực hiếm trả về của các hàm sau đây:public Cursor query(String table, String<> columns, String selection, String<> selectionArgs, String groupBy, String having, String orderBy)public Cursor rawQuery(String sql, String<> selectionArgs)Phương thức getStudent() sẽ đọc một record student trong bảng, nhận student id là tham số.public Student getStudent(int studentId) SQLiteDatabase db = this.getReadableDatabase(); Cursor cursor = db.query(TABLE_NAME, null, KEY_ID + " = ?", new String<> String.valueOf(studentId) ,null, null, null); if(cursor != null) cursor.moveToFirst(); Student student = new Student(cursor.getInt(0), cursor.getString(1), cursor.getString(2), cursor.getString(3)); return student;db.query đang trả về một Cursor, từ bây giờ Cursor đầu đọc chưa trỏ tới dòng dữ liệu nào cả, vì chưng đó, ta bắt buộc gọi lệnh .moveToFirst() nhằm Cursor hoàn toàn có thể trỏ tới mẫu đầu tiên.Phương thức getAllStudents() đã trả về toàn bộ student tất cả trong bảng bên dưới dạng một array danh sách của Student.public ListStudent> getAllStudents() ListStudent> studentList = new ArrayList>(); String query = "SELECT * FROM" + TABLE_NAME; SQLiteDatabase db = this.getReadableDatabase(); Cursor cursor = db.rawQuery(query, null); cursor.moveToFirst(); while(cursor.isAfterLast() == false) Student student = new Student(cursor.getInt(0), cursor.getString(1), cursor.getString(2), cursor.getString(3)); studentList.add(student); cursor.moveToNext(); return studentList;Cập nhật tài liệu trong bảngChúng ta áp dụng hàm update của SQLiteDatabase để cập nhật dữ liệu vào bảng theo một điều kiện ngẫu nhiên nào đó.

public int update(String table, ContentValues values, String whereClause, String<> whereArgs)Đối số 1: tên bảngĐối số 2: đối tượng người dùng muốn sửa đổi (với quý hiếm mới)Đối số 3: tập các điều khiếu nại lọc (dùng vệt ? để tạo điều kiện lọc)Đối số 4: tập các giá trị ủa đk lọc (lấy theo đúng thứ tự)public void updateStudent(Student student) SQLiteDatabase db = this.getWritableDatabase(); ContentValues values = new ContentValues(); values.put(KEY_NAME, student.getName()); values.put(KEY_ADDRESS, student.getAddress()); values.put(KEY_PHONE_NUMBER, student.getPhone_number()); db.update(TABLE_NAME, values, KEY_ID + " = ?", new String<> String.valueOf(student.getId()) ); db.close();Xóa một recordChúng ta áp dụng hàm delete của SQLiteDatabase để xóa tài liệu của một hoặc một trong những record trong bảng theo một điều kiện ngẫu nhiên nào đó

public int delete(String table, String whereClause, String<> whereArgs)Đối số 1: tên bảngĐối số 2: tập điều kiện lọcĐối số 3: tập các giá trị của đk lọcpublic void deleteStudent(int studentId) SQLiteDatabase db = this.getWritableDatabase(); db.delete(TABLE_NAME, KEY_ID + " = ?", new String<> String.valueOf(studentId) ); db.close();Trên đây, tôi đã reviews qua về SQLite với cách áp dụng nó trong Android, hy vọng nó sẽ giúp ích cho mình đọc (yeah)