【问题标题】:Problem when querying in SQLite with Kotlin使用 Kotlin 在 SQLite 中查询时出现问题
【发布时间】:2020-07-04 23:36:27
【问题描述】:

我正在使用 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()
            
        }

【问题讨论】:

  • 当我按下按钮咨询时......这是你代码的哪一部分?编辑您的问题并澄清。
  • 当我按下按钮时 (bt_producto_codigo.setOnClickListener)

标签: android kotlin intellij-idea jetbrains-ide


【解决方案1】:

您的插入未通过

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())

【讨论】:

    猜你喜欢
    • 2022-11-29
    • 1970-01-01
    • 2021-10-16
    • 2021-05-13
    • 2018-12-31
    • 1970-01-01
    • 2022-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多