【问题标题】:Error Reading data from `Sqlite` DB从“Sqlite”数据库读取数据时出错
【发布时间】:2016-05-19 13:32:32
【问题描述】:

我是 SQLITE DB 的新手
我正在使用这些代码行来创建 DB、Table 和插入、检索数据

 try {
    SQLiteDatabase db = openOrCreateDatabase("Custom_Database", MODE_PRIVATE, null);
    db.execSQL("Create Table If Not Exists Age (FirstName Varchar, LastName Varchar, age int(3));");
    db.execSQL("Insert into Age Values ('Inzimam', 'Tariq', 22);");
    Cursor c = db.rawQuery("Select * From Age", null);
    c.moveToFirst();
    Toast.makeText(getApplicationContext(), c.getString(c.getColumnIndex("pName")) + " " + c.getString(c.getColumnIndex("fName")), Toast.LENGTH_SHORT).show();
    Toast.makeText(getApplicationContext(), "Database Created Your code is working ! ", Toast.LENGTH_SHORT).show();
    c.moveToNext();
    db.close();
}catch (Exception e){
    Toast.makeText(getApplicationContext(), "Error : " +e.getMessage(), Toast.LENGTH_LONG).show();
}

但它抛出异常无法来自CursorWinsow 的第 0 行、第 -1 列。 在访问数据之前确保游标已正确初始化 来自它。

我认为c.moveToFirst(); 应该为那个但是它不这样做为什么?

相同的代码如何在其他项目中运行。它在这个应用程序中给出错误的原因是什么?

编辑:在将 FisrtName 和 LastName 存储在 String 中并使用 Strings to Toast 之后,

String name = c.getString(0);
String father = c.getString(1);
Toast.makeText(getApplicationContext(), "Name = " + name + " " + father, Toast.LENGTH_SHORT).show();

但是我想知道在ToastStrings 中获取数据有什么区别

谢谢

【问题讨论】:

    标签: database sqlite android-sqlite


    【解决方案1】:

    使用 do => 尝试这种方式,而:

    if (c.moveToFirst()) {   //looping through all rows
            do {
       Toast.makeText(getApplicationContext(), c.getString(c.getColumnIndex("pName")) + " " + c.getString(c.getColumnIndex("fName")), Toast.LENGTH_SHORT).show();
       Toast.makeText(getApplicationContext(), "Database Created Your code is working ! ", Toast.LENGTH_SHORT).show();
    
            } while (c.moveToNext());
        }
        c.close();
        db.close();
    

    你还需要添加:

            db = this.getWritableDatabase();
    

    之前:

     Cursor c = db.rawQuery("Select * From Age", null);
    

    【讨论】:

    • 通过添加db = this.getWritableDatabase(); 给出语法错误“无法解析getWritableDatabase(); 方法
    • 尝试不使用该行并告诉我您在片段或活动中使用它的位置
    猜你喜欢
    • 1970-01-01
    • 2021-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多