Kết Nối Cơ Sở Dữ Liệu Sqlite Trong Android

SQLite là 1 trong cơ sở dữ liệu SQL mã nguồn mlàm việc, nó tàng trữ dữ liệu vào một tập tin văn uống bạn dạng bên trên một sản phẩm công nghệ. Nó mặc định đã làm được tích vừa lòng trên máy Android. Để truy cập dữ liệu này, các bạn không cần phải tùy chỉnh cấu hình bất kỳ một số loại kết nối như thế nào đến nó như JDBC, ODBC, ... SQLite được Richard Hipp viết dưới dạng thỏng viện bởi ngôn ngữ xây dựng C.

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

SQLite bao gồm những ưu thế sau:

Tin cậy: các chuyển động transaction (chuyển giao) nội trong cửa hàng tài liệu được tiến hành trọn vẹn, không khiến lỗi khi xẩy ra sự thế phần cứngTuân theo chuẩn chỉnh SQL92 (chỉ có một vài ba Điểm sáng ko hỗ trợ)Không buộc phải setup cấu hìnhKích thước công tác gọn gàng nhẹ, với cấu hình không hề thiếu chỉ không đầy 300 kBThực hiện nay những thao tác làm việc dễ dàng và đơn giản nkhô giòn rộng các hệ thống đại lý tài liệu khách/nhà khácKhông đề nghị ứng dụng phú trợPhần mượt tự do cùng với mã nguồn msinh sống, được chú thích rõ ràng

*


Csống sở tài liệu được tạo và giữ vào thỏng mụcdata/data/APP_Name/databases/DATABASE_NAME.


Cách sử dụng SQLite vào lập trình sẵn Android

Tương tự như những hệ cai quản trị đại lý tài liệu không giống thì Lúc thao tác với Database thì bạn sẽ bao hàm hành động cổ điển kia làCRUD: Create, Read, Update, Delete

trước hết, để thao tác làm việc với SQLite, ta bắt buộc sử dụng 2 đối tượng

SQLiteOpenHelper: đối tượng dùng để chế tác, tăng cấp, đóng góp mlàm việc kết nối CSDLSQLiteDatabase: đối tượng dùng để xúc tiến những câu lệnh Squốc lộ trên một CSDL

1. SQLiteOpenHelper

Lớp này còn có 2 hàm khởi tạo thành, một hàm 4 tmê man số:SQLiteOpenHelper(Contextcontext,Stringname,SQLiteDatabase.CursorFactoryfactory, int version), một hàm 5 tđam mê số:SQLiteOpenHelper(Contextcontext,Stringname,SQLiteDatabase.CursorFactoryfactory, int version,DatabaseErrorHandler errorHandler), tuy vậy, ta đa số làm việc với hàm 4 tsi số

Tham mê số 1:Context context: Context là 1 lớp trừu tượng của khối hệ thống, cất biết tin môi trường xung quanh vận dụng, cung ứng những phương thức để rất có thể shop với hệ quản lý, góp họ dễ dãi truy cập và liên tưởng tới các tài nguim của khối hệ thống...Tham số 2:String name: Tên databaseTmê mẩn số 3:CursorFactory factory: hay nhằm nullTđắm đuối số 4:Int version: version của database

khi khởi tạo thành một đối tượng người tiêu dùng của lớp này, ta phải ghi đnai lưng 2 phương thức

1. onCreate(): thủ tục này được điện thoại tư vấn bởi vì framework, giả dụ gồm những hiểu biết truy cập database và lại không khởi sản xuất database, ở đây ta nên viết code khởi chế tác database, rõ ràng là khởi chế tạo ra bảng (chú ý: Khi khởi chế tạo ra bảng, ta phải để tên khóa chính là_id)

2. onUpgrade(): phương thức này được dùng Lúc áp dụng của người tiêu dùng có không ít phiên bản database được cấp dưỡng. Nó đã update database hiện tất cả hoặc khởi chế tạo lại trải qua onCreate().

Lớp này có 2 phương thứcgetReadableDatabase()(chỉ đọc) vàgetWriteableDatabase()(có thể chấp nhận được ghi đọc). Thông qua 2 thủ tục này, ta có thể tạo thành một đối tượngSQLiteDatabase

Ví dụ: Chúng ta tạo ra một tờ DatabaseHandler kế thừa từ bỏ lớpSQLiteOpenHelper

import android.content.Context;import android.database.sqlite.SQLiteDatabase;import game android.database.sqlite.SQLiteDatabase.CursorFactory;import apk.database.sqlite.SQLiteOpenHelper;public class DatabaseHandler extends SQLiteOpenHelper private 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);
Override public 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);
Override public 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); 2. SQLiteDatabaseĐể tạo nên một đại lý dữ liệu, chúng ta chỉ cần Call phương thứcopenOrCreateDatabasenày với tên đại lý tài liệu của công ty và chính sách nhỏng một tmê mẩn số. Nó trả về một thể hiện của cửa hàng dữ liệu SQLite cơ mà các bạn đề xuất nhận thấy trong cú pháp object. Nó riêng được giới thiệu dưới đây

SQLiteDatabse mydatabase = openOrCreateDatabase("your database name",MODE_PRIVATE,null);Một số hàm bao gồm sãn trong gói cửa hàng tài liệu, Dưới danh sách sau:

openDatabase(String path, SQLiteDatabase.CursorFactory factory, int flags, DatabaseErrorHandler errorHandler): Phương thức này chỉ mở thêm đại lý tài liệu hiện nay có với những chế độ cờ thích hợp. Các chính sách cờ thịnh hành có thể là OPEN_READWRITE OPEN_READONLY.openDatabase(String path, SQLiteDatabase.CursorFactory factory, int flags): Pmùi hương thức này giống như như cách làm bên trên vày nó cũng xuất hiện những cửa hàng dữ liệu hiện gồm, tuy vậy nó không định nghĩa bất kỳ giải pháp xử lý nhằm xử trí các lỗi đại lý tài liệu.openOrCreateDatabase(String path, SQLiteDatabase.CursorFactory factory): Pmùi hương thức nàykhông những lộ diện tuy thế lại tạo nên đại lý tài liệu giả dụ nó ko sống thọ. Phương thức này là tương đương với thủ tục OpenDatabaseopenOrCreateDatabase(File tệp tin, SQLiteDatabase.CursorFactory factory): Phương thơm thu72c này cũng như như thủ tục trên nhưng mà đề xuất mất File đối tượng người dùng nhỏng là một trong tuyến đường nhưng chưa hẳn là một trong chuỗi. Nó tương tự cùng với file.getPath()

Lớp này còn có các thủ tục sau để gia công câu hỏi cùng với SQLite:

insert()update()delete()execSQL(): tiến hành một câu lệnh Squốc lộ trực tiếpquery(): dùng để làm truy vấn vấn các đại lý dữ liệu

2.1. insert():Sử dụng cách làm này nhằm insert một bản ghi vào CSDLlấy một ví dụ. ta có một đối tượngdatabasethuộc kiểuSQLiteDatabaseDùng đối tượngContentValues(sẽ giải thích ở đoạn riêng)để mang tài liệu vào bảng. Đối tượng này còn có các phương thơm thứcput(thương hiệu cột , dữ liệu).Sau kia điện thoại tư vấn phương thơm thứcinsertđể lấy đối tượng người sử dụng (mẫu này) vào bảng.

ContentValues ct = new ContentValues();ct.put("full_name", "Thích Thi Rớt");ct.put("student_id", "20131271");ct.put("gender", 1);ct.put("year", 21);Sau đó sử dụng pmùi hương thứcinsert

database.insert(DATABASE_NAME,null,ct);2.2. public int update(String table, ContentValues values, String whereClause, String<> whereArgs):Phương thứcupdatecủaSQLiteDatabasenhằm cập nhật tài liệu trong bảng theo một điều kiện bất kỳ nào đó.Phương thức này trả về số mẫu bị ảnh hưởng. lấy ví dụ nếu như có 3 chiếc bị thay đổi thì nó trả về 3. giả dụ không có cái như thế nào bị tác động thì nó trả về 0.

Tđắm say số 1: tên bảng

Tmê man số 2: đối tượng người tiêu dùng muốn sửa đổi (với mức giá trị mới)

Tđê mê số 3: tập những điều kiện thanh lọc (cần sử dụng dấu?để tạo ra ĐK lọc)

Tđam mê số 4: tập những quý hiếm ủa ĐK lọc (mang theo như đúng vật dụng 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();2.3. public int delete(String table, String whereClause, String<> whereArgs):Chúng ta áp dụng phương thứcdeletecủaSQLiteDatabaseđể xóa tài liệu của một hoặc một số trong những record vào bảng theo một ĐK bất kỳnhư thế nào kia. Pmùi hương thức nàytrả về số dòng bị tác động. Muốn xóa toàn bộ dữ liệu vào bảng thì ta truyền null vào 2 đối số cuối

Tsay mê số 1: thương hiệu bảngTmê man số 2: tập ĐK lọcTđắm say số 3: tập những giá trị của điều kiện lọc

Ví dụ: Xóa một Sinh Viên từ bảng Student

public void deleteStudent(int studentId) SQLiteDatabase db = this.getWritableDatabase(); db.delete(TABLE_NAME, KEY_ID + " = ?", new String<> String.valueOf(studentId) ); db.close();2.4.execSQL(String sql): Pmùi hương thức này dùng để làm thực thi một câu lệnh SQL trực tiếp.Phương thơm pháp exeSQL không chỉ là thêm tài liệu, tuy thế cũng khá được thực hiện nhằm cập nhật hoặc sửa thay đổi dữ liệu đang lâu dài vào cơ sở tài liệu bằng phương pháp áp dụng tham số ràng buộc

*

2.5.public Cursor query(String table, String<> columns, String selection, String<> selectionArgs, String groupBy, String having, String orderBy): Pmùi hương trang bị này sử dụng để tróc nã vấn dữ liệu trong bảng.Là thao tác phức hợp độc nhất vô nhị vào truy vấn suất SQLite. Ta sử dụng Cursor để tàng trữ quý hiếm trả về của hàm bên dưới đây:

Cursor cursor = null;cursor = sqlDB.query(TABLE_NAME, null, "student_id = " + studentID, null, null, null, null);cursor.moveToFirst();Student sv = new Student(cursor.getInt(0),cursor.getString(1), cursor.getString(2), cursor.getInt(3), 22);Bảng trình bày tmê say số của pmùi hương thưc query


Tmê say sốGiải thích
tableTên bảng đề nghị tầm nã vấn
columnsDanh sách các cột đề xuất truy vấn vấn, nếu như tsay mê số null là mang toàn bộ các cột
selectionLọc điều kiện, hệt như mệnh đề WHERE của SQL. Nếu truyền quý hiếm là null vẫn lấy toàn bộ tài liệu. những truyền tên cột = ? ví dụ: Id=?.

Xem thêm: Download Game Chém Dưa Hấu Cho Điện Thoại Cảm Ứng Hoàn Toàn Miễn Phí

selectionArgsGiá trị cần lọc nghỉ ngơi tsi mê số selection.
groupByNhóm các cái như thể nhau, giống như mệnh đề GROUPhường BY của Squốc lộ . Truyền giá trị null sẽ không team.
havingCho phnghiền thanh lọc đội kết quả làm sao đang xuất hiện vào hiệu quả ở đầu cuối của bảng ghi
orderBySắp xếp các loại dữ liệu, giống như mệnh đề ORDER BY trong SQL. Nếu truyền quý giá null đang thu xếp khoác định, có thể là không bố trí.

3. Đối tượng CursorĐối tượng cursor phát âm đơn giản và dễ dàng là 1 nhỏ trỏ, trỏ đến công dụng trả về của câu tầm nã vấn. con trỏ này trỏ mang lại cái bảng trả về của câu truy vấn

ursor cursor = database.query(TABLE_NAME, null, null, null, null, null, null);3.1.cursor.getCount():Pmùi hương thứctrả về số mẫu của bảng hiệu quả.3.2. cursor.moveToFirst(): Phương thức nàydi chuyển bé trỏ này lên đầu bảng .3.3. cursor.moveToNext(): Phương thức này nhằm di chuyểnthanh lịch mẫu tiếp theo.3.4. cursor.isAfterLast(): Kiểm tra xemcursor làm việc cuối bảng?, ko trỏ vào dòng xoáy làm sao, thủ tục này sẽ trả về quý giá true.3.5.cursor.getString(), cursor.getInt(): Haiphương này để kéo ra công bố cột theo tên cột hoặc index (chỉ mục).

4. Đối tượng ContentValuesCác đối tượng người tiêu dùng ContentValues được cho phép khẳng định khóa / quý hiếm. Các key thay mặt dấn dạng cột bảng cùng value đại diện thay mặt cho câu chữ cho các bảng ghi vào cột này. ContentValues Có thể được sử dụng nhằm chèn cùng cập nhật các mục các đại lý dữ liệuVí dụ:

ContentValues ct = new ContentValues();ct.put("full_name", "Thích Thi Rớt");ct.put("student_id", "20131271");ct.put("gender", 1);ct.put("year", 21);