首页 > 解决方案 > Android Sqlite,Toast 显示数据已插入但未插入

问题描述

我试图在惰性化时将数据插入到 Sqlite 中,它显示“已插入”,但是当我尝试在那里提取数据但数据库中没有数据时,我还检查了创建的 sqlite 浏览器表但未插入数据

这是我的代码

fun inserData(user: User) {
        var database = writableDatabase
        var values = ContentValues()
        if (user.Description.equals("CLOTHES")) {
            values.put("TEXT", "${user.Category}")
            values.put("IMAGE", "${user.Image}")
            if (values !== null) {
                Toast.makeText(ctx, "Inserted", Toast.LENGTH_SHORT).show()
                database.insert(Cloth,null,values)
            }
        }
        database.close()
    }

数据

fun ClothData(): ArrayList<User> {
    var clothData = ArrayList<User>()
    var db = readableDatabase
    var cursor = db.rawQuery("SELECT*FROM $Cloth", arrayOf())
    if (cursor !== null && cursor.moveToFirst()) {
        do {
            var user = User()
            user.Description = cursor.getString(cursor.getColumnIndex("TEXT"))
            user.Image = cursor.getBlob(cursor.getColumnIndex("IMAGE"))
            clothData.add(user)
        } while (cursor.moveToNext())
    }
    return clothData
}

标签: androidsqlite

解决方案


SQLiteDatabase.insert 不承诺插入一行。您需要检查返回值 > 0。

我总是使用 insertOrThrow() 更好地捕获约束错误等异常。


推荐阅读