【问题标题】:Android: Cursor is always returning nullAndroid:光标始终返回 null
【发布时间】:2017-05-27 06:17:02
【问题描述】:

我正在尝试将信息传递到 Fragment,我在其中发送存储在我的表中的用户名。但是它总是返回空,这让我怀疑光标所在的位置。

我在网上查看了示例解决方案,但无法解决。这是我到目前为止所做的:

public DbResponse getData(){
    DbResponse obj = new DbResponse();
    SQLiteDatabase db = this.getWritableDatabase();
    Cursor cursor = db.rawQuery("select * from " + TABLE_NAME, null);


    cursor.moveToFirst();
    if (cursor!= null && cursor.getCount() > 0){
        // i want the name of the user here
        obj.Dname = cursor.getString(cursor.getColumnIndex(COL_1));
    }
    cursor.close();
    return obj;
}

我也有一门课

public class DbResponse {
public String Dname;

}

最后我想在这里投射它:

    public void ShowData(){
    DatabaseHelper db = new DatabaseHelper(getActivity());
    DbResponse response = db.getData();
    Toast.makeText(getContext(), response.Dname , Toast.LENGTH_SHORT).show();
}

Toast 总是不返回任何东西,我知道为什么。 请指教。谢谢你

【问题讨论】:

  • 换行:SQLiteDatabase db = this.getReadableDatabase();
  • 确实改变了它仍然没有敬酒。任何建议
  • 您是否在 mainfest 中添加了任何读写权限?@Ahmad Meer
  • 我没有,但是我添加了这个 它仍然是空的
  • 先查看表中有数据,导入数据库到sdcard,使用stackoverflow.com/questions/19093458/…查看

标签: android cursor


【解决方案1】:

您应该正确检查您的代码和数据库,因为您的数据库是否已创建?是否包含表,表是否有值?

如有任何疑问,请告诉我!

【讨论】:

  • 好的,现在缩小范围。经过数小时的搜索,我发现在使用 API 25 或我的物理手机使用 Android 监视器时,我无法找到任何数据库。但这是我使用 API 23 的惊喜,它运行良好。知道如何解决它。
  • 您将无法为您的物理设备或手机找到数据库。您可以获取 avd 或模拟器设备的数据库。
【解决方案2】:

好的,终于成功了。我无法更详细地解释我的答案,因为我仍然处于编码阶段,但是:

我发现没有从片段中调用数据库助手中的任何函数,所以没有插入或发生任何事情。 所以,我认为这可能与未发送的(onAttach 或 Activity 或 Context)有关。

现在我不知道他们会做什么,如果有人可以轻松解释它,非常感谢。 我将从 Fragment 收集的所有信息发送到实现 Fragment Listener 的主要活动。然后主要活动执行了数据库功能。 它有效:P

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 2011-09-04
    • 1970-01-01
    • 1970-01-01
    • 2014-05-09
    • 1970-01-01
    • 2016-05-31
    相关资源
    最近更新 更多