【问题标题】:Android SQL cursor is NULLAndroid SQL 游标为 NULL
【发布时间】:2014-07-04 10:53:25
【问题描述】:

在我的 sql.query 中,有时光标应该返回空值。例如在下面的代码中,光标正在寻找用户名。如果用户有用户名,那么光标将返回它。如果不是,那么我认为它是空的。我的问题是,当游标确实找到空值时,我会因“越界”错误而崩溃。基本上意味着光标没有找到任何东西。

   public static String getUserName() {

        int rowIncrement = 1; 
        Log.d(DATABASE, "Getting Username");
        String[] usercolumns = new String[] { KEY_ROWID, KEY_NAME, KEY_PASSWORD };
        Cursor c = myDatabase.query(USER_TABLE, usercolumns, KEY_ROWID + "="
                + rowIncrement, null, null, null, null);
        if (c != null) {
            c.moveToFirst();
            String lUserName = c.getString(1);
            Log.d("DATABASE", "Username = " + lUserName);
            return lUserName;
        }
        return null;
    }

如果光标找不到任何内容,这段代码有什么问题会导致崩溃?

【问题讨论】:

  • 请发布 logcat 输出

标签: android sql null indexoutofboundsexception


【解决方案1】:

似乎因为c.moveToFirst() 返回布尔值。所以你应该像这样改变你的代码。

if (c != null && c.moveToFirst()) {
        String lUserName = c.getString(1);
        Log.d("DATABASE", "Username = " + lUserName);
        return lUserName;
    }

你可以在这里查看http://developer.android.com/reference/android/database/Cursor.html

【讨论】:

  • 还是不太对。我现在收到一个空指针异常。在这种情况下,表中故意没有用户名。用户应该基于这个事实被重定向到帐户创建页面,但是由于返回的值是“null”,所以应用程序崩溃了。
  • 其实等等,返回端的字符串条件不正确。我有 if{fUsername.isempty 而不是 if{fUsername == null
猜你喜欢
  • 2021-11-06
  • 1970-01-01
  • 1970-01-01
  • 2011-03-27
  • 2017-04-01
  • 1970-01-01
  • 2016-10-30
  • 2017-10-31
  • 1970-01-01
相关资源
最近更新 更多