DB操作のために下記のクラスを作成します。
package com.example.myfavoritecontentsmanage
import android.content.Context
import android.database.sqlite.SQLiteDatabase
import android.database.sqlite.SQLiteOpenHelper
public class SampleDBHelper(
context: Context,
databaseName: String,
factory: SQLiteDatabase.CursorFactory?,
version: Int
) : SQLiteOpenHelper(context, databaseName, factory, version) {
override fun onCreate(database: SQLiteDatabase?) {
database?.execSQL("create table if not exists SampleTable (id text primary key, name text)");
}
override fun onUpgrade(database: SQLiteDatabase?, oldVersion: Int, newVersion: Int) {
if (oldVersion < newVersion) {
database?.execSQL("alter table SampleTable add column deleteFlag integer default 0")
}
}
}
これで、IDと名前だけ格納できるテーブルができます。
package com.example.myfavoritecontentsmanage
import android.content.ContentValues
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ArrayAdapter
import androidx.fragment.app.Fragment
import com.example.myfavoritecontentsmanage.databinding.FragmentCreateBinding
import java.util.*
class CreateFragment : Fragment() {
private lateinit var binding: FragmentCreateBinding
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
binding = FragmentCreateBinding.inflate(inflater, container, false)
inflater.inflate(R.layout.fragment_create, container, false)
ArrayAdapter.createFromResource(
requireContext(),
R.array.categories_array,
R.layout.spinner_item
).also { adapter ->
// Specify the layout to use when the list of choices appears
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
// Apply the adapter to the spinner
binding.category.adapter = adapter
}
binding.save.setOnClickListener { v ->
// データの挿入処理
val dbHelper = SampleDBHelper(requireContext(), "SampleDB", null, 1);
val database = dbHelper.writableDatabase
val values = ContentValues()
values.put("id", UUID.randomUUID().toString())
values.put("name", "サンプル")
database.insertOrThrow("SampleTable", null, values)
// データの確認処理
val databaseR = dbHelper.readableDatabase
val sql =
"select id, name from " + "SampleTable"
val cursor = databaseR.rawQuery(sql, null)
if (cursor.count > 0) {
cursor.moveToFirst()
var s = cursor.getString(1)
println(s)
}
println(cursor)
}
return binding.root
}
}
めちゃくちゃざっくりですが、// データの挿入処理
がデータの挿入処理で、その後の処理は値確認用のデバッグコードです。
(SQLiteの中身を見る方法を調べたのですが、ちょっと面倒だったので、selectして値を確認することにしました.....)