SQLite là một cơ sở tài 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 dạng trên một thiết bị. Nó khoác định đã làm được tích hợp trên sản phẩm công nghệ Android. Để truy cập dữ liệu này, bạn không nhất thiết phải thiết lập ngẫu nhiên loại liên kết nào cho 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 gồm các ưu điểm sau:Tin cậy: các hoạt động transaction (chuyển giao) nội vào cơ sở dữ liệu được thực hiện trọn vẹn, không gây lỗi khi xảy ra sự rứa phần cứngTuân theo chuẩn SQL92 (chỉ bao gồm một vài điểm lưu ý không hỗ trợ)Không cần thiết đặt cấu hìnhKích thước công tác gọn nhẹ, với thông số kỹ thuật đầy đầy đủ chỉ không đầy 300 kBThực hiện các thao tác dễ dàng nhanh hơn các hệ thống cơ sở tài liệu khách/chủ khácKhông cần phần mềm phụ trợPhần mềm tự do thoải mái với mã nguồn mở, được chú giải rõ ràngTin cậy: các chuyển động transaction (chuyển giao) nội vào cơ sở tài liệu được thực hiện trọn vẹn, không khiến lỗi khi xảy ra sự thế phần cứngTuân theo chuẩn SQL92 (chỉ có một vài điểm lưu ý không hỗ trợ)Không cần cài đặt cấu hìnhKích thước chương 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 đơn giản nhanh rộng các 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ã nguồn mở, được chú thích rõ ràng


Bạn đang xem: Sqlite android là gì

SQLiteOpenHelper: đối tượng người dùng dùng nhằm tạo, nâng cấp, đóng mở kết nối CSDLSQLiteDatabase: đối tượng người sử dụng dùng để thực thi những câu lệnh SQL trên một CSDL
Lớp này còn có 2 hàm khởi tạo, một hàm 4 tham số, một hàm 5 tham số, tuy nhiên, ta nhà yếu làm việc với hàm 4 tham số
Tham số 1:Context context: Context là 1 trong lớp trừu tượng của hệ thống, đựng thông tin môi trường xung quanh ứng dụng, hỗ trợ các phương thức để rất có thể tương tác cùng với hệ điều hành, giúp chúng ta dễ dàng truy cập và shop tới những tài nguyên của hệ thống...Tham số 2:String name: tên databaseTham số 3:CursorFactory factory: thường để nullTham số 4:Int version: version của database
onCreate(): cách thức này được gọi bởi vì framework, nếu tất cả yêu cầu truy cập database mà lại chưa khởi chế tạo ra database, ở đây ta cần viết code khởi sinh sản database, cụ thể là khởi tạo ra bảng (chú ý: lúc khởi chế tạo bảng, ta phải để tên khóa thiết yếu là_id)onUpgrade(): thủ tục này được sử dụng khi ứng dụng của bạn có nhiều phiên bạn dạng database đc thêm vào. Nó sẽ cập nhật database hiện tất cả hoặc khởi tạo lại thông qua onCreate().
Lớp này có 2 phương thứcgetReadableDatabase()(chỉ đọc) vàgetWriteableDatabase()(cho phép ghi đọc). Trải qua 2 cách làm này, ta rất có thể tạo ra một đối tượngSQLiteDatabase
*

tham số một là có có thể chấp nhận được distinct hay khôngtham số 2 là tên bảng (Chú ý tênbảngvà têndatabaselàkhác nhau).tham số 3 là mảng các cột sẽ trả lại, để null tức là trả lại tất cả các cột, để null y hệt như select *, còn nhằm một mảng y hệt như select cot1 cot2.tham số 4 là điều kiện, nhằm null nghĩa là không có đk.tham số cửu là limit nghĩa là giới hạn số dòng lấy về.Các tham số còn lại mình ko rõ, thường để null, các bạn gg thêm nhé
Sử dụng phương thức này nhằm insert một bản ghi vào CSDLVí dụ. Ta gồm một đối tượngdatabasethuộc kiểuSQLiteDatabaseĐể insert, đầu tiên cần tạo thành mộtContentValue(sẽ giải thích ở phần riêng)

ContentValues ct = new ContentValues();ct.put("full_name", "leveehandbook.net");ct.put("student_id", "2021");ct.put("gender", 1);ct.put("year", 21);
và một đối tượngSQLiteDatabaselàsqlDBTa ao ước update bạn dạng ghi này mang lại year = 22.Đầu tiên cần kéo ra được phiên bản ghi, áp dụng câu lệnhquery()
Cursor cursor = null;cursor = sqlDB.query(TABLE_NAME, null, "student_id = " + studentID, null, null, null, null);cursor.moveToFirst();SinhVien sv = new SinhVien(cursor.getInt(0),cursor.getString(1), cursor.getString(2), cursor.getInt(3), 22);
ở đây, điều quan trọng đặc biệt là ta đã mang ra được khóa chính_idlàcursor.getInt(0), tiếp đến gán mang lại thuộc tính id của đối tượng sv. Đây đó là điểm chủ yếu giúp ta bao gồm được đk update
ContentValues ct = new ContentValues();ct.put("full_name", sv.fullName);ct.put("student_id", sv.studentID);ct.put("gender", sv.gender);ct.put("year", sv.year);sqlDB.update(TABLE_NAME, ct, "_id = " + sv.id, null );
Các đối tượng người tiêu dùng ContentValues được cho phép xác định khóa / giá trị. Những key thay mặt nhận dạng cột bảng và value đại diện thay mặt cho nội dung cho những bảng ghi vào cột này. ContentValues rất có thể được sử dụng để chèn và update các mục cửa hàng dữ liệuVí dụ:
ContentValues ct = new ContentValues();ct.put("full_name", "leveehandbook.net");ct.put("student_id", "20192010");ct.put("gender", 1);ct.put("year", 21);
ContentValues ct = new ContentValues();ct.put("full_name", "leveehandbook.net");ct.put("student_id", "20192010");ct.put("gender", 1);ct.put("year", 21);ct.put("full_name", "www leveehandbook.net");ct.put("student_id", "20192010");ct.put("gender", 0);ct.put("year", 19);
Chứ ko phải tạo thành một đối tượng người dùng ContentValue mới, khi ấy hàm insert sống trên đang trả về số kiểu long là 2
Đối tượng cursor hiểu đơn giản dễ dàng là một nhỏ trỏ, trỏ đến kết quả trả về của câu truy vấn. Con trỏ này trỏ đến cái bảng trả về của câu truy vấn vấnVí dụ:
Đầu tiên ta di chuyển con trỏ này lên đầu bảngcursor.moveToFirst();Sau khi đọc xong xuôi một chiếc chạy lệnhcursor.moveToNext();để sang chiếc tiếp theoKhi cursor ngơi nghỉ cuối bảng, ko trỏ vào trong dòng nào, phương thứccursor.isAfterLast()Sẽ trả về cực hiếm trueĐể lấy ra thông tin, dung phương thứccursor.getString(), cursor.getInt()
Trong ví dụ như này họ sẽ cũng nhau làm cho 1 ứng dụng cai quản thông tin sv có chức năng thêm sửa xóa với giao diện ListView
Bước đầu bọn họ cần một đối tượng người tiêu dùng Student có những thuộc tính như ID, Name, Address, PhoneNumber, Email, luôn nhớ getter setter cùng constructor.
public class Student private int mID; private String mName; private String mAddress; private String mPhoneNumber; private String mEmail; public Student() public Student(String mName, String mAddress, String mPhoneNumber, String mEmail) this.mName = mName; this.mAddress = mAddress; this.mPhoneNumber = mPhoneNumber; this.mEmail = mEmail; public Student(int mID, String mName, String mAddress, String mPhoneNumber, String mEmail) this.mID = mID; this.mName = mName; this.mAddress = mAddress; this.mPhoneNumber = mPhoneNumber; this.mEmail = mEmail; public int getmID() return mID; public void setmID(int mID) this.mID = mID; public String getmName() return mName; public void setmName(String mName) this.mName = mName; public String getmAddress() return mAddress; public void setmAddress(String mAddress) this.mAddress = mAddress; public String getmPhoneNumber() return mPhoneNumber; public void setmPhoneNumber(String mPhoneNumber) this.mPhoneNumber = mPhoneNumber; public String getmEmail() return mEmail; public void setmEmail(String mEmail) this.mEmail = mEmail;
Các các bạn tạo thêm một Java Class mới và đánh tên là DBManager, sau đó các bạn cho nó extends từ SQLiteOpenHelper. Từ bây giờ Class sẽ báo lỗi vày thiếu một vài phương thức, chúng ta lần lượt chế tạo một Constructor với 2 cách tiến hành onCreate và onUpgrade mang đến Class là không còn lỗi ngay!!.
public class DBManager extends SQLiteOpenHelper { private final String TAG = "DBManager"; private static final String DATABASE_NAME = "students_manager"; private static final String TABLE_NAME = "students"; private static final String ID = "id"; private static final String NAME = "name"; private static final String ADDRESS = "address"; private static final String PHONE_NUMBER = "phone"; private static final String thư điện tử = "email"; private static int VERSION = 1; private Context context; private String SQLQuery = "CREATE TABLE " + TABLE_NAME + " (" + ID + " integer primary key, " + NAME + " TEXT, " + e-mail + " TEXT, " + PHONE_NUMBER + " TEXT, " + ADDRESS + " TEXT)"; public DBManager(Context context) super(context, DATABASE_NAME, null, VERSION); this.context = context; Log.d(TAG, "DBManager: ");
Override public void onCreate(SQLiteDatabase sqLiteDatabase) sqLiteDatabase.execSQL(SQLQuery); Log.d(TAG, "onCreate: ");
Override public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) Log.d(TAG, "onUpgrade: ");
public void addStudent(Student student) SQLiteDatabase db = this.getWritableDatabase(); ContentValues values = new ContentValues(); values.put(NAME, student.getmName()); values.put(ADDRESS, student.getmAddress()); values.put(PHONE_NUMBER, student.getmPhoneNumber()); values.put(EMAIL, student.getmEmail()); db.insert(TABLE_NAME, null, values); db.close(); Log.d(TAG, "addStudent Successfuly");
public List<Student> getAllStudent() List<Student> listStudent = new ArrayList<>(); String selectQuery = "SELECT * FROM " + TABLE_NAME; SQLiteDatabase db = this.getWritableDatabase(); Cursor cursor = db.rawQuery(selectQuery,null); if (cursor.moveToFirst()) vì Student student = new Student(); student.setmID(cursor.getInt(0)); student.setmName(cursor.getString(1)+""); student.setmEmail(cursor.getString(2)); student.setmPhoneNumber(cursor.getString(3)); student.setmAddress(cursor.getString(4)); listStudent.add(student); while (cursor.moveToNext()); db.close(); return listStudent;
public int updateStudent(Student student) SQLiteDatabase db = this.getWritableDatabase(); ContentValues contentValues = new ContentValues(); contentValues.put(NAME,student.getmName()); contentValues.put(ADDRESS,student.getmAddress()); contentValues.put(EMAIL,student.getmEmail()); contentValues.put(PHONE_NUMBER,student.getmPhoneNumber()); return db.update(TABLE_NAME,contentValues,ID+"=?",new String<>String.valueOf(student.getmID())); public int deleteStudent(int id) SQLiteDatabase db = this.getWritableDatabase(); return db.delete(TABLE_NAME,ID+"=?",new String<> String.valueOf(id));
import androidx.appcompat.app.AppCompatActivity;import java.util.List;public class MainActivity extends AppCompatActivity private EditText edtName; private EditText editAddress; private EditText edtPhoneNumber; private EditText edtEmail; private EditText edtId; private Button btnSave; private Button btnUpdate; private ListView lvStudent; private DBManager dbManager; private CustomAdapter customAdapter; private List<Student> studentList;
Override protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); dbManager = new DBManager(this); initWidget(); studentList = dbManager.getAllStudent(); setAdapter(); btnSave.setOnClickListener(new View.OnClickListener()
Override public void onClick(View view) Student student = createStudent(); if (student != null) dbManager.addStudent(student); updateListStudent(); setAdapter(); ); lvStudent.setOnItemClickListener(new AdapterView.OnItemClickListener()
Override public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) Student student = studentList.get(position); edtId.setText(String.valueOf(student.getmID())); edtName.setText(student.getmName()); editAddress.setText(student.getmAddress()); edtEmail.setText(student.getmEmail()); edtPhoneNumber.setText(student.getmPhoneNumber()); btnSave.setEnabled(false); btnUpdate.setEnabled(true); ); btnUpdate.setOnClickListener(new View.OnClickListener()
Override public void onClick(View view) Student student = new Student(); student.setmID(Integer.parseInt(String.valueOf(edtId.getText()))); student.setmName(edtName.getText()+""); student.setmAddress(editAddress.getText()+""); student.setmEmail(edtEmail.getText()+""); student.setmPhoneNumber(edtPhoneNumber.getText()+""); int result = dbManager.updateStudent(student); if(result>0) updateListStudent(); btnSave.setEnabled(true); btnUpdate.setEnabled(false); ); lvStudent.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener()


Xem thêm: Các Bài Toán Phương Trình Logarit Trong Đề Thi Đại Học, Phương Trình Logarit Trong Các Đề Thi Đại Học

Override public boolean onItemLongClick(AdapterView<?> adapterView, View view, int position, long l) Student student = studentList.get(position); int result = dbManager.deleteStudent(student.getmID()); if(result>0) Toast.makeText(MainActivity.this, "Delete successfuly", Toast.LENGTH_SHORT).show(); updateListStudent(); else Toast.makeText(MainActivity.this, "Delete fail", Toast.LENGTH_SHORT).show(); return false; ); private Student createStudent() String name = edtName.getText().toString(); String address = String.valueOf(editAddress.getText()); String phoneNumber = edtPhoneNumber.getText() + ""; String email = edtEmail.getText().toString(); Student student = new Student(name, address, phoneNumber, email); return student; private void initWidget() edtName = (EditText) findViewById(R.id.edt_name); editAddress = (EditText) findViewById(R.id.edt_address); edtPhoneNumber = (EditText) findViewById(R.id.edt_number); edtEmail = (EditText) findViewById(R.id.edt_email); btnSave = (Button) findViewById(R.id.btn_save); lvStudent = (ListView) findViewById(R.id.lv_student); edtId = (EditText) findViewById(R.id.edt_id); btnUpdate = (Button) findViewById(R.id.btn_update); private void setAdapter() if (customAdapter == null) customAdapter = new CustomAdapter(this, R.layout.item_list_student, studentList); lvStudent.setAdapter(customAdapter); else customAdapter.notifyDataSetChanged(); lvStudent.setSelection(customAdapter.getCount()-1); public void updateListStudent() studentList.clear(); studentList.addAll(dbManager.getAllStudent()); if(customAdapter!= null) customAdapter.notifyDataSetChanged();