آموزش دیتابیس SQLite در کاتلین
سلام دوستان عزیز در این سری از آموزش برنامه نویسی اندروید به آموزش دیتابیس SQLite در کاتلین می پردازیم دیتابیس sqlite یکی از معروف ترین دیتابیس ها در اندروید به منظور ذخیره سازی داده استفاده می شود استفاده از دیتابیس sqlite در کاتلین بسیار شبیه به جاوا است در ادامه با ما همراه باشید تا نحوه استفاده از دیتابیس sqlite را یاد گیرید.
برای اینکه از دیتابیس Sqlite استفاده کنید نیاز به اضافه کردن کتابخانه خاصی نیستید.
اولین قدم برای استفاده از دیتابیس sqlite ساخت یک DatabaseHandler یا DatabaseHelper است در واقع با استفاده از این نوع کلاس ها عملبات درج و update , خواندن راحت تر خواهد بود.
وارد لایه خود به نام activity_main شده و کدهای زیر را قرار دهید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <EditText android:id="@+id/editTextName" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="10dp" android:padding="8dp" /> <EditText android:id="@+id/editTextAge" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="10dp" android:autofillHints="Age" android:inputType="number" android:padding="8dp" android:textColor="@android:color/background_dark" /> <Button android:id="@+id/btnInsert" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="10dp" android:padding="8dp" android:text="Add data" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:orientation="horizontal" android:weightSum="3"> <Button android:id="@+id/btnRead" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_margin="10dp" android:layout_weight="1" android:padding="8dp" android:text="Read" /> </LinearLayout> <ScrollView android:layout_width="match_parent" android:layout_height="match_parent> <TextView android:id="@+id/tvResult" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="8dp" android:textSize="16sp" android:textStyle="bold" /> </ScrollView> </LinearLayout> |
در بالا دو فیلد ورودی داریم که اطلاعات کاربر را در دیتابیس SQlite درج می کند و یک دکمه که اطلاعات درج شده در دیتابیس را نشان می دهد.
یک کلاس به نام DataBaseHelper.kt ایجاد کرده و کدهای زیر را در آن قرار دهید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | import android.content.ContentValues import android.content.Context import android.database.sqlite.SQLiteDatabase import android.database.sqlite.SQLiteOpenHelper import android.widget.Toast val DATABASENAME = "MY DATABASE" val TABLENAME = "Users" val COL_NAME = "name" val COL_AGE = "age" val COL_ID = "id" class DataBaseHandler(var context: Context) : SQLiteOpenHelper(context, DATABASENAME, null, 1) { override fun onCreate(db: SQLiteDatabase?) { val createTable = "CREATE TABLE " + TABLENAME + " (" + COL_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + COL_NAME + " VARCHAR(256)," + COL_AGE + " INTEGER)" db?.execSQL(createTable) } override fun onUpgrade(db: SQLiteDatabase?, oldVersion: Int, newVersion: Int) { //onCreate(db); } fun insertData(user: User) { val database = this.writableDatabase val contentValues = ContentValues() contentValues.put(COL_NAME, user.name) contentValues.put(COL_AGE, user.age) val result = database.insert(TABLENAME, null, contentValues) if (result == (0).toLong()) { Toast.makeText(context, "Failed", Toast.LENGTH_SHORT).show() } else { Toast.makeText(context, "Success", Toast.LENGTH_SHORT).show() } } fun readData(): MutableList<User> { val list: MutableList<User> = ArrayList() val db = this.readableDatabase val query = "Select * from $TABLENAME" val result = db.rawQuery(query, null) if (result.moveToFirst()) { do { val user = User() user.id = result.getString(result.getColumnIndex(COL_ID)).toInt() user.name = result.getString(result.getColumnIndex(COL_NAME)) user.age = result.getString(result.getColumnIndex(COL_AGE)).toInt() list.add(user) } while (result.moveToNext()) } return list } } |
onCreate دیتابیس را ایجاد می کند.
onUpgrade : در صورتی که دیتابیس آپدیت شود دیتابیس یکبار drop و سپس از ابتدا ساخته می شود.
insertData : عمل درج توسط این متد انجام می شود.
readData : اطلاغات ذخیره شده در دیتابیس را نشان می دهد.
برای اینکه از این کلاس استفاده کنیم وارد MainActivity.kt شده و همانند زیر کلاس را فراخوانی می کنیم.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.widget.Toast import kotlinx.android.synthetic.main.activity_main.* class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) title = "KotlinApp" val context = this val db = DataBaseHandler(context) btnInsert.setOnClickListener { if (editTextName.text.toString().isNotEmpty() && editTextAge.text.toString().isNotEmpty() ) { val user = User(editTextName.text.toString(), editTextAge.text.toString().toInt()) db.insertData(user) clearField() } else { Toast.makeText(context, "Please Fill All Data's", Toast.LENGTH_SHORT).show() } } btnRead.setOnClickListener { val data = db.readData() tvResult.text = "" for (i in 0 until data.size) { tvResult.append( data[i].id.toString() + " " + data[i].name + " " + data[i].age + "\n" ) } } } private fun clearField() { editTextName.text.clear() editTextAge.text.clear() } } |
کد بالا اطلاعات را از EditText دریافت کرده و اطلاعات دریافتی را در دیتابیس درج می کند و امکان دیدن داده های ذخیره شده نیز وجود دارد.
موفق و پیروز باشید.