Я новичок в 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()
}
}
}
}