使用 Kotlin 在 SQLite 中查询时出现问题

Problem when querying in SQLite with Kotlin

我正在练习Kotlin中的SQLite数据库,注册后想查阅资料。

问题是,当我按下咨询按钮时,我得到的消息是我放入 Toast 而不是我注册的消息。

class QLiteOpenHelper(context: Context, name: String, factory: SQLiteDatabase.CursorFactory?, version: Int) : SQLiteOpenHelper(context, name, factory, version) {
    override fun onCreate(db: SQLiteDatabase) {
        db.execSQL("create table articulos(codigo int primary key, descripcion text,precio real)")
    }
    override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) {
    }
}


 bt_registrar.setOnClickListener {
//Llamr a la base de datos
            val admin = QLiteOpenHelper(this, "Administracion", null, 1)
            val bd = admin.writableDatabase
            //Llamamos los datos
            val registro = ContentValues()
            registro.put("Codigo", et_codigo.text.toString())
            registro.put("Descripcion", et_name.text.toString())
            registro.put("Articulo", et_precio.text.toString())
            //Insertar los datos en la tabla articulos
            bd.insert("artculos", null, registro)
            bd.close()
            et_codigo.setText("")
            et_name.setText("")
            et_precio.setText("")
            Toast.makeText(this, "Los datos se han cargado", Toast.LENGTH_SHORT).show()
        }


bt_producto_codigo.setOnClickListener {

            val codigo = et_codigo.text.toString().toInt()

            val admin = QLiteOpenHelper(this, "administracion", null, 1)
            val bd = admin.writableDatabase
            val fila = bd.rawQuery("select descripcion,precio from articulos where codigo=$codigo", null)
            if (fila.moveToFirst()) {
                et_name.setText(fila.getString(0))
                et_precio.setText(fila.getString(1))
            } else
                Toast.makeText(this, "No existe un artículo con dicho código",  Toast.LENGTH_SHORT).show()
            bd.close()
            
        }

您的插入没有通过

registro.put("Codigo", et_codigo.text.toString())

“Codigo”需要与

中的相同
db.execSQL("create table articulos(codigo int primary key, descripcion text,precio real)")

匹配所有字段的大小写和类型 最佳做法是对键使用常量。例如:

const val ARTICULOS_KEY ="articulos"
const val CODIGO_KEY ="codigo"    
...
db.execSQL("CREATE TABLE $ARTICULOS_KEY($CODIGO_KEY INT PRIMART....)
...
registro.put(CODIGO_KEY, et_codigo.text.toString().toInt())