Sqlite android là gì

     

Đây là một bài viết step-by-step hướng dẫn triển khai SQLite trong Android database với ngôn từ Kotlin. Trong nội dung bài viết này, mình vẫn code các tác dụng cơ phiên bản của một csdl (CRUD). Chúng ta sẽ áp dụng SQLiteOpenHelper class để tạo nên và thống trị SQLite database.

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

Ví dụ minh họa vào suốt nội dung bài viết hướng dẫn là xây dựng tiện ích PhoneBook. Ứng dụng có các làm việc như đọc, thêm, sửa , xóa các danh bạ từ SQLite database Android.

Sau khi phát âm xong bài viết này, các bạn sẽ học được phần đông sqlite android tutorial:

Làm thể như thế nào để chế tác là thực hiện SQLite database bởi Kotlin thực hiện SQLiteOpenHelper trường đoản cú sqlite game android exampleCách tạo một custom ListView bằng Custom Adapter.Bắt sự khiếu nại click vào từng tương tác trên ListViewCách thêm mới, chỉnh sửa, với xóa danh bạ vào SQLite database

Ngôn ngữ được áp dụng trong nội dung bài viết này là Kotlin nhé

Chúng ta bắt đầu thôi!

*


Nội dung chính của bài viết

Xây dựng vận dụng PhoneBook bởi cơ sở tài liệu SQLite vào Android

Xây dựng vận dụng PhoneBook bởi cơ sở dữ liệu SQLite vào Android

Để tránh lãng phí thời gian bằng triết lý khô khan, bọn chúng ta bước đầu tạo bắt đầu project nhé

#1. Tạo ra một project mới

Tạo bắt đầu một project trong android Studio, thực hiện tùy chọn mặc định cùng đặt thương hiệu project là KotlinDBTutorial. Đừng quên kiểm tra vào checkbox với nội dung Include Kotlin support.

Mình thực hiện Empty Activity trong screen chọn activity để khởi tạo. Chấm dứt bước Sqlite game android studio.

*

#2. Tạo thành một mã sản phẩm Class

Tạo mới một Kotlin class và đặt thương hiệu nó là ContactData. Đây là một model class để database quản lý các phiên bản ghi của bảng contact như là 1 đối tượng người sử dụng trong Kotlin.

Ở activity này, họ sẽ thêm, sửa và xóa các dữ liệu contacts tự database. Tôi vừa mới chế tạo ra một form để thêm/sửa một contact. Đây là form hết sức dễ dàng sử dụng TextView, EditText cùng 2 Buttons.

Phía dưới là đoạn code layout của nó.

Và đó là diện mạo của layout. Cũng đơn giản phải không?

*

#4. Khởi sinh sản SQLite database bằng cách dùng SQLiteOpenHelper class

SQLiteOpenHelper được sử dụng để tạo database. Nó cho phép quản lý cơ sở dữ liệu, tăng cấp hoặc hạ cấp những phiên bản của database.

Sqlite android create database dễ dàng là tạo thành một class, khắc tên là DatabaseHandler. Chúng ta sẽ triển khai toàn bộ các tính năng CRUD của database trong class này.


Dưới đấy là đoạn code của DatabaseHandler class.

class DatabaseHandler : SQLiteOpenHelper companion object val Tag = "DatabaseHandler" val DBName = "ContactDB" val DBVersion = 1 val tableName = "phoneTable" val ConID = "id" val FirstName = "fname" val LastName = "lname" val Number = "number" val email = "email" var context: Context? = null var sqlObj: SQLiteDatabase constructor(context: Context) : super(context, DBName, null, DBVersion) this.context = context; sqlObj = this.writableDatabase; override fun onCreate(p0: SQLiteDatabase?) //SQL for creating table var sql1: String = "CREATE TABLE IF NOT EXISTS " + tableName + " " + "(" + ConID + " INTEGER PRIMARY KEY," + FirstName + " TEXT, " + LastName + " TEXT, " + e-mail + " TEXT," + Number + " TEXT );" p0!!.execSQL(sql1); override fun onUpgrade(p0: SQLiteDatabase?, p1: Int, p2: Int) p0!!.execSQL("Drop table IF EXISTS " + tableName) onCreate(p0) fun AddContact(values: ContentValues): String var Msg: String = "error"; val ID = sqlObj!!.insert(tableName, "", values) if (ID > 0) Msg = "ok" return Msg fun FetchContacts(keyword: String): ArrayList var arraylist = ArrayList() val sqb = SQLiteQueryBuilder() sqb.tables = tableName val cols = arrayOf("id", "fname", "lname", "email", "number") val rowSelArg = arrayOf(keyword) val cur = sqb.query(sqlObj, cols, "fname like ?", rowSelArg, null, null, "fname") if (cur.moveToFirst()) vị val id = cur.getInt(cur.getColumnIndex("id")) val fname = cur.getString(cur.getColumnIndex("fname")) val lname = cur.getString(cur.getColumnIndex("lname")) val thư điện tử = cur.getString(cur.getColumnIndex("email")) val number = cur.getString(cur.getColumnIndex("number")) arraylist.add(ContactData(id, fname, lname, email, number)) while (cur.moveToNext()) var count: Int = arraylist.size return arraylist fun UpdateContact(values: ContentValues, id: Int): String var selectionArs = arrayOf(id.toString()) val i = sqlObj!!.update(tableName, values, "id=?", selectionArs) if (i > 0) return "ok"; else return "error"; fun RemoveContact(id: Int): String var selectionArs = arrayOf(id.toString()) val i = sqlObj!!.delete(tableName, "id=?", selectionArs) if (i > 0) return "ok"; else return "error"; Mình sẽ lý giải qua về chức năng của các hàm bên trên nhé

Companion Objects vào Kotlin

Trước đây, khi thực hiện Java, mình hay được dùng biến static để quan niệm tên database, tên bảng, thương hiệu cột hay phiên bạn dạng database… không tồn tại khái niệm biến/hàm static trong ngữ điệu Kotlin. Cố kỉnh vào đó, fan ta thực hiện khái niệm “companion object”.

companion object val Tag = "DatabaseHandler" val DBName = "ContactDB" val DBVersion = 1 val tableName = "phoneTable" val ConID = "id" val FirstName = "fname" val LastName = "lname" val Number = "number" val email = "email"Trong hàm khởi sản xuất constructor(), bọn họ truyền vào thông số “context” tự activity vẫn hoạt động.

Database sẽ tiến hành tạo khi phương thức writableDatabase được gọi.

Xem thêm: Chữ Bị Lệch Dòng Trong Word Và Cách Khắc Phục Chi Tiết, Chữ Bị Lệch Dòng Trong Word

Hàm onCreate()được điện thoại tư vấn khi database được khởi tạo. Chúng ta có thể tạo bảng của cơ sở dữ liệu trong hàm này

Hàm onUpgrade()sử dụng khi chúng ta cần biến hóa cấu trúc của database bây giờ của ứng dụng như: thêm bảng, thêm cột…

Hàm AddContact()sẽ thêm 1 liên hệ mới vào database.

Hàm FetchContacts()sẽ đọc toàn thể records có trong bảng với trả về cho bọn họ 1 ArrayList.Nếu bọn họ truyền thông số là “%” nó vẫn lấy tổng thể records gồm trong database, ngược lại, nó vẫn tìm kiếm theo first_name.

UpdateContact() và RemoveContact()sẽ chỉnh sửa và xóa contact trong database. Bọn họ sẽ truyền contact_id vào hàm này với những contact_id là khóa chính của bảng contact.

Bây giờ, class xử lý database sẽ được chuẩn bị sẵn sàng để được sửa dụng

#5. Tiến hành ListView cùng với Custom Adapter

Đây là 1 xây dựng cơ bạn dạng của ứng dụng thực hiện ListView và Button. Mở file layout của activity và phân phối đoạn code như bên dưới:

họ cần phải tạo layout cho từng ô của ListView. Đây là 1 trong layout đơn giản chỉ gồm một ImageView với 1 TextView.

Bây giờ, chúng ta có thể tạo 1 custom adapter mang đến ListView. Bạn hãy tạo bắt đầu 1 class cùng đặt tên nó là ContactAdapter và thừa kế BaseAdapter class.

Bên bên dưới là đoạn code hoàn hảo của ContactAdapter.kt

class ContactAdapter(con:Context, arrList:ArrayList): BaseAdapter() var arrayList = ArrayList() var context: Context? = null var myInflater: LayoutInflater? = null init this.context = bé this.myInflater = LayoutInflater.from(context) this.arrayList = arrList override fun getView(p0: Int, p1: View?, p2: ViewGroup?): View var myView = myInflater!!.inflate(R.layout.list_block,null) var ConObj = arrayList var full_name : String = ConObj.FirstName.toString() +" "+ ConObj.LastName.toString() myView.contact_name.text = full_name return myView override fun getItem(p0: Int): Any return arrayList override fun getItemId(p0: Int): Long return p0.toLong() override fun getCount(): Int return arrayList.size

#6. Lấy tài liệu từ database và gửi vào ListView

Tiếp theo, bọn họ sẽ thực hiện DatabaseHandler class để cửa hàng với database và hiển thị ra ListView thông qua Custom Adapter

class MainActivity : AppCompatActivity() var ContactList = ArrayList() override fun onCreate(savedInstanceState: Bundle?) super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) override fun onResume() super.onResume() var DB:DatabaseHandler = DatabaseHandler(this); ContactList = DB.FetchContacts("%"); if(ContactList.size>0) var ContactAdapterObj = ContactAdapter(this, ContactList) contact_list.adapter = ContactAdapterObj contact_list.onItemClickListener = AdapterView.OnItemClickListener adapterView, view, position, id -> //ContactList holds ContactData object var fname = ContactList.FirstName; var lname = ContactList.LastName; var thư điện tử = ContactList.Email; var phone = ContactList.PhoneNumber; var id = ContactList.conID //Passing data khổng lồ ContactManager activity. Var intent = Intent(this, ContactManager::class.java) intent.putExtra("id", id) intent.putExtra("fname", fname) intent.putExtra("lname", lname) intent.putExtra("email", email) intent.putExtra("phone", phone) intent.putExtra("action", "edit") startActivity(intent) else Toast.makeText(this, "No liên hệ Found", Toast.LENGTH_SHORT).show() add_contact_btn.setOnClickListener() var intent= Intent(this,ContactManager::class.java) startActivity(intent) Trong hàm onResume(), chúng ta tạo ra 1 đối tượng người dùng của DatabaseHandler class và call tới hàm FetchContact(). Hiệu quả trả về là ArrayList

Danh sách contacts sẽ tiến hành truyền qua ContactAdapter thông qua hàm khởi tạo.

var ContactAdapterObj = ContactAdapter(this, ContactList) contact_list.adapter = ContactAdapterObj

Xử lý sự kiện click trong ListView

Với ngôn từ Kotlin, việc triển khai lắng nghe sự kiện OnClick cực kỳ đơn giản với ngắn gọn hơn hơn Java khôn xiết nhiều

contact_list.onItemClickListener = AdapterView.OnItemClickListener adapterView, view, position, id -> Tương tự mang lại bắt sự kiện click cùng với Button.Chúng ta đang đi mang lại activity ContactManager lúc button được nhấn. Activity ContactManager sẽ đựng 1 form nhằm thêm và sửa đổi liên hệ.

add_contact_btn.setOnClickListener() var intent= Intent(this,ContactManager::class.java) startActivity(intent)

#7. Biện pháp thêm bắt đầu và sửa đổi danh bạ

Đây là activity lắp thêm hai, có nhiệm vụ là thêm new và chỉnh sửa các contact.

class ContactManager : AppCompatActivity() override fun onCreate(savedInstanceState: Bundle?) super.onCreate(savedInstanceState) setContentView(R.layout.activity_contact_manager) // Getting id value pass by MainActivity via Intent // If no value pass, it will return 0 var record_id = intent.getIntExtra("id", 0) if (record_id == 0) //Add Record save_btn.text = "Add Contact" else //Update Record save_btn.text = "Update Contact" var _fname = intent.getStringExtra("fname") var _lname = intent.getStringExtra("lname") var _email = intent.getStringExtra("email") var _phone = intent.getStringExtra("phone") fnametxt.setText(_fname) lnametxt.setText(_lname) emailtxt.setText(_email) phone_txt.setText(_phone) save_btn.setOnClickListener() var a = fnametxt.text.toString(); var b = lnametxt.text.toString(); var c = emailtxt.text.toString(); var d = phone_txt.text.toString(); if(a=="") Toast.makeText(this, "Enter FirstName", Toast.LENGTH_SHORT).show() else if(d=="") Toast.makeText(this, "Enter Phone Number", Toast.LENGTH_SHORT).show() else var values = ContentValues() values.put("fname", a) values.put("lname", b) values.put("email", c) values.put("number", d) //Adding liên hệ if(record_id==0) var DB: DatabaseHandler = DatabaseHandler(this); var response = DB.AddContact(values); if(response=="ok") Toast.makeText(this, "Contact Added", Toast.LENGTH_SHORT).show() var intent = Intent(this, MainActivity::class.java) startActivity(intent) finish() else Toast.makeText(this, "Not Added..Try again", Toast.LENGTH_SHORT).show() else //update liên hệ var DB: DatabaseHandler = DatabaseHandler(this); var res: String = DB.UpdateContact(values, record_id) if(res=="ok") Toast.makeText(this, "Contact Updated", Toast.LENGTH_SHORT).show() var intent = Intent(this, MainActivity::class.java) startActivity(intent) finish() else Toast.makeText(this, "Error..Try Again", Toast.LENGTH_SHORT).show() delete_btn.setOnClickListener() var DB: DatabaseHandler = DatabaseHandler(this); var res: String = DB.RemoveContact(record_id) if(res=="ok") Toast.makeText(this, "Contact Deleted", Toast.LENGTH_SHORT).show() else Toast.makeText(this, "Error..Try Again", Toast.LENGTH_SHORT).show() var intent = Intent(this, MainActivity::class.java) startActivity(intent) finish() Trong activity này, bọn họ sẽ thêm với chỉnh sửa liên hệ tùy ở trong vào cực hiếm của trường _id. Ví như nó bằng 0, họ sẽ thêm liên hệ mới. Ngược lại, ví như nó không giống 0 thì bọn họ sẽ chỉnh sửa tương tác có id khớp ứng với _id được nhập vào.

Chúng ta sử dụng những hàm AddContact(), UpdateContact() and RemoveContact() của DatabaseHandler, đọc tài liệu từ EditText với truyền nó vào khung của ContentValue.

Xem thêm: Điện Thoại Iphone 6 Đài Loan Giá Rẻ Tphcm, Iphone Đài Loan

Cuối cùng, áp dụng của chúng ta đã sẵn sàng để chạy xe trên máy ảo hoặc trên bất kể thiết bị app android nào.