android приложение вылетает при попытке вставить данные в sqlite (Kotlin) - PullRequest
0 голосов
/ 07 мая 2020

Я новичок в android, и я пытаюсь сделать простую проблему проекта sqlite, когда я пытаюсь вставить сбой приложения данных

он дает имя и возраст, и я хочу сохранить его в sqlite с идентификатором автоматического ввода Я хочу использовать это для списка истории в другом приложении

вот мое основное действие xml

<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:orientation="vertical"
android:layout_height="match_parent"
tools:context=".MainActivity">

<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="20dp"
    android:hint="name"
    android:id="@+id/etvname"></EditText>

<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="20dp"
    android:id="@+id/etvage"
    android:hint="age"
    android:inputType="number"></EditText>

<Button
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="20dp"
    android:text="insert"
    android:id="@+id/btn_insert"></Button>

и вот класс пользователя

   class user{
var id:Int=0
var name:String=""
var age:Int=0
constructor(name:String,age:Int){
        this.name=name
        this.age=age
    }
}

и класс DataBaseHandler

val DATABASE_NAME="MyDB"
val TABLE_NAME="Users"
val COL_NAME="name"
val COL_AGE="age"
val COL_ID="id"

class DataBaseHandler(var context: Context) :SQLiteOpenHelper(context, DATABASE_NAME,null,1) {
    override fun onCreate(db: SQLiteDatabase?) {
        val createTable="CREATE TABLE " + TABLE_NAME +" (" + COL_ID + " INTEGER PRIMARY KEY AUTOINCERMENT," + COL_NAME + " TEXT," + COL_AGE + " INTEGER)";
        db!!.execSQL(createTable)
    }

    override fun onUpgrade(db: SQLiteDatabase?, oldVersion: Int, newVersion: Int) {
        TODO("Not yet implemented")
    }
fun insertData(user: User){
    val db=this.writableDatabase
    var cv=ContentValues()
    cv.put(COL_NAME,user.name)
    cv.put(COL_AGE,user.age)
    var result=db.insert(TABLE_NAME,null,cv)
    if (result==-1.toLong())
        Toast.makeText(context,"Failed",Toast.LENGTH_SHORT).show()
    else
        Toast.makeText(context,"Success",Toast.LENGTH_SHORT).show()
}
}

и основное действие

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        var context=this
btn_insert.setOnClickListener {
    if (etvname.text.toString().length>0 && etvage.text.toString().length>0){
var user= User(etvname.text.toString(),etvage.text.toString().toInt())
        var db=DataBaseHandler(this)
        db.insertData(user)
    }
    else{
        Toast.makeText(this,"Error",Toast.LENGTH_SHORT).show()
    }
}
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...