База данных sqLite Kotlin Android создаётся. Но данные в неё не добавляются
База данных создаётся но данные полученные с EditText(данные из Edit Text приходят корректно, проверял) не записываются в Базу данных.
Name Class:
import android.provider.BaseColumns
object CampDbNameClass : BaseColumns{
const val TABLE_NAME = "authorization"
const val COLUMN_NAME_LOGIN = "login"
const val COLUMN_NAME_PASSWORD = "password"
const val COLUMN_NAME_SQUAD = "squad"
const val DATABASE_VERSION = 1
const val DATABASE_NAME = "Camp.db"
const val CREATE_TABLE_AUTHORIZATION =
"CREATE TABLE IF NOT EXISTS $TABLE_NAME (" +
"${BaseColumns._ID} INTEGER PRIMARY KEY AUTOINCREMENT ," +
"$COLUMN_NAME_LOGIN TEXT," +
"$COLUMN_NAME_PASSWORD TEXT,"+
"$COLUMN_NAME_SQUAD INTEGER)"
const val DELETE_TABLE = "DROP TABLE IF EXISTS $TABLE_NAME"
}
DataBaseHalper Class:
import android.content.Context
import android.database.sqlite.SQLiteDatabase
import android.database.sqlite.SQLiteOpenHelper
import com.example.singupactivity.ui.main.DataBase.CampDbNameClass.CREATE_TABLE_AUTHORIZATION
import com.example.singupactivity.ui.main.DataBase.CampDbNameClass.DATABASE_NAME
import com.example.singupactivity.ui.main.DataBase.CampDbNameClass.DATABASE_VERSION
import com.example.singupactivity.ui.main.DataBase.CampDbNameClass.DELETE_TABLE
import com.example.singupactivity.ui.main.Fragment.LoginFragment
class CampDbHelper(context: Context) : SQLiteOpenHelper(context, DATABASE_NAME, null,
DATABASE_VERSION) {
override fun onCreate(db: SQLiteDatabase?) {
db?.execSQL(CREATE_TABLE_AUTHORIZATION)
}
override fun onUpgrade(db: SQLiteDatabase?, oldVersion: Int, newVersion: Int) {
db?.execSQL(DELETE_TABLE)
onCreate(db)
}
}
DataBaseManager Class:
import android.annotation.SuppressLint
import android.content.ContentValues
import android.content.Context
import android.database.sqlite.SQLiteDatabase
import java.sql.SQLException
class CampDbManager(context: Context) {
private val campDbHelper = CampDbHelper(context)
private lateinit var db: SQLiteDatabase
fun openDb() {
db = campDbHelper.writableDatabase
}
fun insertToTableAuthorization(login : String, password : String, squad : Int){
val cv = ContentValues().apply {
put(CampDbNameClass.COLUMN_NAME_LOGIN, login)
put(CampDbNameClass.COLUMN_NAME_PASSWORD, password)
put(CampDbNameClass.COLUMN_NAME_SQUAD, squad)
}
val rowID = db.insert(CampDbNameClass.TABLE_NAME, null, cv)
}
@SuppressLint("Range")
fun selectToTableAuthorization(const: String) : ArrayList<String> {
openDb()
val dataList = ArrayList<String>()
while(cursor?.moveToNext()!!){
val dataText = cursor.getString(cursor.getColumnIndex(const))
dataList.add(dataText.toString())
}
cursor.close()
return dataList
}
fun closeDb() {
campDbHelper.close()
}
}
Activity из которого вызывается фрагмент, в котором происходит чтение и добавление в БД.
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.viewpager.widget.ViewPager
import com.example.singupactivity.databinding.ActivityMainBinding
import com.google.android.material.tabs.TabLayout
import com.example.singupactivity.ui.main.Adapter.ViewPagerAdapter
import com.example.singupactivity.ui.main.DataBase.CampDbManager
import com.example.singupactivity.ui.main.Fragment.LoginFragment
import com.example.singupactivity.ui.main.Fragment.SignupFragment
class CampMainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
private val campDbManager = CampDbManager(this)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
campDbManager.openDb()
setUpTabs()
}
private fun setUpTabs() {
val viewPager: ViewPager = binding.viewPager
val tabs: TabLayout = binding.tabs
val adapter = ViewPagerAdapter(supportFragmentManager)
adapter.addFragment(LoginFragment(), "Login")
adapter.addFragment(SignupFragment(), "Signup")
viewPager.adapter = adapter
tabs.setupWithViewPager(viewPager)
}
override fun onDestroy() {
campDbManager.closeDb()
super.onDestroy()
}
}
И сам Fragment:
import android.app.AlertDialog
import android.content.DialogInterface
import android.content.Intent
import android.os.Bundle
import android.util.Log
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Button
import android.widget.EditText
import android.widget.Toast
import com.example.singupactivity.ui.main.Activity.NavigationActivity
import com.example.singupactivity.R
import com.example.singupactivity.ui.main.DataBase.CampDbManager
class SignupFragment : Fragment() {
val campDbManager = activity?.let { CampDbManager(it) }
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View {
val view: View = inflater.inflate(R.layout.fragment_signup, container, false)
val btSignup = view.findViewById<Button>(R.id.btSignup)
val etLogin = view.findViewById<EditText>(R.id.etLogin)
val etPassword = view.findViewById<EditText>(R.id.etPassword)
val etRepeatPassword = view.findViewById<EditText>(R.id.etRepeatPasswors)
val etSquad = view.findViewById<EditText>(R.id.etSquad)
var loginIsTrue = false
var passwordIsTrue = false
var squadIsTrue = false
btSignup.setOnClickListener {
if (etLogin.text.isNullOrEmpty() or
etPassword.text.isNullOrEmpty() or
etRepeatPassword.text.isNullOrEmpty() or
etSquad.text.isNullOrEmpty()
) {
alert(R.string.no_data_massage)
} else {
if (etPassword.text.toString() == etRepeatPassword.text.toString()) {
val loginList =
campDbManager?.selectToTableAuthorization(etLogin.text.toString())
if (loginList != null) {
for ((i, item) in loginList.withIndex()) {
if (loginList[i] == etLogin.text.toString()) {
loginIsTrue = true
}
}
}
val passwordList =
campDbManager?.selectToTableAuthorization(etPassword.text.toString())
if (passwordList != null) {
for ((i, item) in passwordList.withIndex()) {
if (passwordList[i] == etPassword.text.toString()) {
passwordIsTrue = true
}
}
}
val squadList =
campDbManager?.selectToTableAuthorization(etSquad.text.toString())
if (squadList != null) {
for ((i, item) in squadList.withIndex()) {
squadIsTrue = squadList[i] == etSquad.text.toString()
}
}
if (squadIsTrue and passwordIsTrue and loginIsTrue) {
alert(R.string.alredy_registered)
} else {
campDbManager?.insertToTableAuthorization(
login = etLogin.text.toString(),
password = etPassword.text.toString(),
squad = etSquad.text.toString().toInt()
)
startActivity(Intent(activity, NavigationActivity::class.java))
Toast.makeText(
activity,
R.string.successful_authorization_and_login,
Toast.LENGTH_SHORT
).show();
}
} else {
alert(R.string.uncorrect_password)
}
}
}
return view
}
fun alert(massage: Int) {
val builder = AlertDialog.Builder(activity!!)
builder.setTitle(R.string.notification)
.setMessage(massage)
.setCancelable(false)
.setPositiveButton(R.string.close, DialogInterface.OnClickListener { dialog, id ->
dialog.dismiss()
})
val alert = builder.create()
alert.show()
}
}