2020年12月23日星期三

Can't Insert data into SQLite-Kotlin-Android

I try to run this code, every thing is OK. I checked every variable. It takes and pass data. The table was created in my database. After running there is no error messages. When i click insert button it give me (Failed) as i coded if insert data fail. The table is empty! I tried every thing but with out success!

package com.example.myapplication  class User{  var id:Int=0  var name:String=""  var age:Int=0      constructor(name:String, age:Int){          this.name=name          this.age=age}  constructor(){}  }    
package com.example.myapplication    import android.content.ContentValues  import android.content.Context  import android.database.Cursor  import android.database.sqlite.SQLiteDatabase  import android.database.sqlite.SQLiteOpenHelper  import android.widget.Toast    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 creatTable="CREATE TABLE "+ TABLE_NAME+" ("+                  COL_ID+" INTEGER PRIMARY KEY AUTOINCREMENT, "+                  COL_NAME+" VARCHAR(256),"+                  COL_AGE +" INTEGER)";          db?.execSQL(creatTable)      }        override fun onUpgrade(db: SQLiteDatabase?, oldVersion: Int, newVersion: Int) {      }      fun insertData(user:User){          val db=this.writableDatabase          var cv=ContentValues().apply {              put(COL_NAME,user.name)              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()      }        fun readData():MutableList<User>      {  var list:MutableList<User> = ArrayList()          val query="SELECT * FROM " + TABLE_NAME          val db=this.readableDatabase          val result= db.rawQuery(query,null)         if(result.moveToNext()){          do{                  var 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())           }          result.close()        db.close()         return list      }  }    
package com.example.myapplication  import android.os.Bundle  import android.widget.Button  import android.widget.TextView  import android.widget.Toast  import androidx.appcompat.app.AppCompatActivity  class MainActivity : AppCompatActivity() {      override fun onCreate(savedInstanceState: Bundle?) {          super.onCreate(savedInstanceState)          setContentView(R.layout.activity_main)          val context= this          var db=DataBaseHandler(context)          val etvName:TextView=findViewById(R.id.etvName)          val etvAge:TextView=findViewById(R.id.etvAge)          val btn_insert:Button = findViewById(R.id.btn_insert)          btn_insert.setOnClickListener {              if(etvName.text.toString().length>0 &&etvAge.text.toString().length>0){                  var user=User(etvName.text.toString(),etvAge.text.toString().toInt())                  db.insertData(user)  }              else(Toast.makeText(context,"Please fill all data",Toast.LENGTH_SHORT).show())          }          val btn_read:Button          btn_read=findViewById(R.id.btn_read)          btn_read.setOnClickListener {          var data=db.readData()          val tvResult:TextView          tvResult=findViewById(R.id.tvResult)      for (i in 0..data.size-1){          tvResult.append(data.get(i).id.toString() + "  " + data.get(i).name + "  " + data.get(i).age)      }  }      }  }  
<?xml version="1.0" encoding="utf-8"?>  <androidx.constraintlayout.widget.ConstraintLayout      xmlns:android="http://schemas.android.com/apk/res/android"      xmlns:tools="http://schemas.android.com/tools"      xmlns:app="http://schemas.android.com/apk/res-auto"      android:layout_width="match_parent"      android:layout_height="match_parent"      tools:context=".MainActivity">      <EditText          android:id="@+id/etvName"          android:layout_width="140dp"          android:layout_height="71dp"          android:text="Name"          app:layout_constraintBottom_toBottomOf="parent"          app:layout_constraintHorizontal_bias="0.174"          app:layout_constraintLeft_toLeftOf="parent"          app:layout_constraintRight_toRightOf="parent"          app:layout_constraintTop_toTopOf="parent"          app:layout_constraintVertical_bias="0.042" />      <EditText          android:id="@+id/etvAge"          android:layout_width="138dp"          android:layout_height="75dp"          android:text=""          app:layout_constraintBottom_toBottomOf="parent"          app:layout_constraintEnd_toEndOf="parent"          app:layout_constraintHorizontal_bias="0.857"          app:layout_constraintLeft_toLeftOf="parent"          app:layout_constraintRight_toRightOf="parent"          app:layout_constraintStart_toStartOf="parent"          app:layout_constraintTop_toTopOf="parent"          app:layout_constraintVertical_bias="0.035"          tools:text="Age" />      <Button          android:id="@+id/btn_insert"          android:layout_width="wrap_content"          android:layout_height="wrap_content"          android:text="insert"          app:layout_constraintBottom_toBottomOf="parent"          app:layout_constraintEnd_toEndOf="parent"          app:layout_constraintHorizontal_bias="0.495"          app:layout_constraintStart_toStartOf="parent"          app:layout_constraintTop_toTopOf="parent"          app:layout_constraintVertical_bias="0.169"          tools:ignore="MissingConstraints" />      <Button          android:id="@+id/btn_read"          android:layout_width="wrap_content"          android:layout_height="wrap_content"          android:text="Display"          app:layout_constraintBottom_toBottomOf="parent"          app:layout_constraintEnd_toEndOf="parent"          app:layout_constraintHorizontal_bias="0.123"          app:layout_constraintStart_toStartOf="parent"          app:layout_constraintTop_toTopOf="parent"          app:layout_constraintVertical_bias="0.256"          tools:ignore="MissingConstraints" />      <Button          android:id="@+id/btn_update"          android:layout_width="wrap_content"          android:layout_height="wrap_content"          android:text="update"          app:layout_constraintBottom_toBottomOf="parent"          app:layout_constraintEnd_toEndOf="parent"          app:layout_constraintStart_toStartOf="parent"          app:layout_constraintTop_toTopOf="parent"          app:layout_constraintVertical_bias="0.256"          tools:ignore="MissingConstraints" />        <Button          android:id="@+id/btn_delete"          android:layout_width="wrap_content"          android:layout_height="wrap_content"          android:text="delete"          app:layout_constraintBottom_toBottomOf="parent"          app:layout_constraintEnd_toEndOf="parent"          app:layout_constraintHorizontal_bias="0.879"          app:layout_constraintStart_toStartOf="parent"          app:layout_constraintTop_toTopOf="parent"          app:layout_constraintVertical_bias="0.256"          tools:ignore="MissingConstraints" />      <TextView          android:id="@+id/tvResult"          android:layout_width="368dp"          android:layout_height="46dp"          android:gravity="center"          android:text="TextView"          app:layout_constraintBottom_toBottomOf="parent"          app:layout_constraintEnd_toEndOf="parent"          app:layout_constraintHorizontal_bias="0.627"          app:layout_constraintStart_toStartOf="parent"          app:layout_constraintTop_toTopOf="parent"          app:layout_constraintVertical_bias="0.411" />  </androidx.constraintlayout.widget.ConstraintLayout>  
https://stackoverflow.com/questions/65433475/cant-insert-data-into-sqlite-kotlin-android December 24, 2020 at 11:06AM

没有评论:

发表评论