【问题标题】:java.lang.IllegalStateException: Couldn't read row 0, col 2 from CursorWindowjava.lang.IllegalStateException:无法从 CursorWindow 读取第 0 行第 2 列
【发布时间】:2016-02-19 01:06:35
【问题描述】:

我在从 SQLLite 数据库中检索数据时遇到异常。

  java.lang.IllegalStateException: Couldn't read row 0, col 2 from CursorWindow.  Make sure the Cursor is initialized correctly before accessing data from it

在线String username= result.getString(1);

主活动

mSubmit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                SQLiteDatabase myDatabase=openOrCreateDatabase("Login",MODE_PRIVATE,null);
                myDatabase.execSQL("CREATE TABLE IF NOT EXISTS Login(Username VARCHAR,Password VARCHAR);");
                myDatabase.execSQL("INSERT INTO Login VALUES('"+mUserName.getText()+"','"+mPassword.getText()+"');");

            }
        });

第二个活动

  SQLiteDatabase myDatabase=openOrCreateDatabase("Login",MODE_PRIVATE,null);

                Cursor result=myDatabase.rawQuery("Select * from Login",null);
             result.moveToFirst();
                String username= result.getString(1);
                String password=result.getString(2);

我哪里错了?

【问题讨论】:

  • 尝试添加 if(result.moveToFirst()) 然后获取用户名和密码。并且列索引从 0 开始
  • @Raghunandan 仍然是同样的异常
  • 你是不是把列索引改成了0和1,说没有2列
  • @Raghunandan 是的,我改变了..我希望我不需要在清单中添加任何权限
  • 你仍然得到同样的异常无法从 CursorWindow 读取第 0 行第 2 列??

标签: android sqlite android-sqlite illegalstateexception


【解决方案1】:

这应该是

 String username= result.getString(0);
 String password=result.getString(1);

光标索引从零开始

完整代码

SQLiteDatabase myDatabase=openOrCreateDatabase("Login",MODE_PRIVATE,null);
Cursor result=myDatabase.rawQuery("Select * from Login",null);
if (result.moveToFirst()) {      
   String username= result.getString(0);
   String password=result.getString(1);                
}

【讨论】:

  • 同样的例外,我也遇到了这个问题
  • 我认为应该可以。卸载您的应用并重新安装新副本
猜你喜欢
  • 2017-05-22
  • 2014-02-21
  • 2015-08-11
  • 1970-01-01
  • 2016-07-29
  • 1970-01-01
  • 2019-12-04
  • 1970-01-01
相关资源
最近更新 更多