You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin中SQLite字符串字段查询显示0的问题解决

Kotlin SQLite字符串字段查询显示0的解决方法

在Kotlin中使用SQLite创建数据表,试图存储字符串类型数据,但查询时字符串字段始终显示0。尝试过将字段类型设为VARCHAR、NVARCHAR、TEXT,结果没有变化。

原代码

try{
    val veritabani=this.openOrCreateDatabase("Urunler", Context.MODE_PRIVATE,null)
    veritabani.execSQL("CREATE TABLE IF NOT EXISTS urunler (id INTEGER PRIMARY KEY, isim TEXT , fiyat INT) ")
    veritabani.execSQL( "INSERT INTO urunler (isim, fiyat ) VALUES ('asda',100)")

    val cursor =veritabani.rawQuery("SELECT * FROM urunler " ,null)

    val idColumnIndex=cursor.getColumnIndex("id")
    val isimColumnIndex=cursor.getColumnIndex("isim")
    val fiyatColumnIndex=cursor.getColumnIndex("fiyat")

    System.out.println("deneme11")

    while(cursor.moveToNext()){
        System.out.println("ID :${cursor.getInt(idColumnIndex)}")
        System.out.println("isim :${cursor.getInt(isimColumnIndex)}")
        System.out.println("fiyat :${cursor.getInt(fiyatColumnIndex)}")
    }
}
catch (e:Exception){
    System.out.println("error"+ e.message);
}

输出结果

I/System.out: ID :1
I/System.out: isim :0
I/System.out: fiyat :100

问题原因

查询字符串字段时方法调用错误:对字符串类型的isim字段使用了cursor.getInt()方法,该方法会尝试将字段值转换为整数,转换失败时默认返回0。正确的做法是使用cursor.getString()来获取字符串类型的数据。

修正后的代码

try{
    val veritabani=this.openOrCreateDatabase("Urunler", Context.MODE_PRIVATE,null)
    veritabani.execSQL("CREATE TABLE IF NOT EXISTS urunler (id INTEGER PRIMARY KEY, isim TEXT , fiyat INT) ")
    veritabani.execSQL( "INSERT INTO urunler (isim, fiyat ) VALUES ('asda',100)")

    val cursor =veritabani.rawQuery("SELECT * FROM urunler " ,null)

    val idColumnIndex=cursor.getColumnIndex("id")
    val isimColumnIndex=cursor.getColumnIndex("isim")
    val fiyatColumnIndex=cursor.getColumnIndex("fiyat")

    System.out.println("deneme11")

    while(cursor.moveToNext()){
        System.out.println("ID :${cursor.getInt(idColumnIndex)}")
        // 使用getString获取字符串类型字段
        System.out.println("isim :${cursor.getString(isimColumnIndex)}")
        System.out.println("fiyat :${cursor.getInt(fiyatColumnIndex)}")
    }
}
catch (e:Exception){
    System.out.println("error"+ e.message);
}

内容的提问来源于stack exchange,提问作者Arafin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 12:57:25