您如何在新活动中查看数据库的结果?

Posted

技术标签:

【中文标题】您如何在新活动中查看数据库的结果?【英文标题】:how do you view the results of a database in a new activity? 【发布时间】:2012-03-05 14:11:43 【问题描述】:

我目前正在创建一个数据库来存储服务站的名称和坐标列表。但是,当我单击查看按钮时,我无法查看数据库。这是我的代码:`

public String getData() 
    
        // TODO Auto-generated method stub
        String[] columns = new String[] KEY_ROWID, KEY_NAME, KEY_COORDINATES;
        Cursor c = myDatabase.query(DATABASE_NAME, columns, null, null, null, null, null);
        String result = "";

        int iRow = c.getColumnIndex(KEY_ROWID);
        int iName = c.getColumnIndex(KEY_NAME);
        int iCoordinates = c.getColumnIndex(KEY_COORDINATES);

        for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext())
        
            result = result + c.getString(iRow) + " " + c.getString(iName) + " " + c.getString(iCoordinates) + "\n";



        

        return result;
    `

有人发现这段代码有问题吗?

【问题讨论】:

我们确实需要了解您面临的问题,例如您遇到的异常,以及发生在哪一行。 您是否在某处打印数据?文本视图?什么地方? 在新的活动中,我将 textview 设置为我的数据库的结果,在下面的代码中。 'TextView tv = (TextView) findViewById(R.id.tvSqlInfo);车站信息 = 新车站(本); info.open();字符串数据 = info.getData();信息.close(); tv.setText(数据);' 对不起,我不知道如何格式化代码? 我的应用程序强制关闭并且错误在 LogCat 中 【参考方案1】:

您的光标可能不包含任何行。如果是这样,c.getString() 会抛出异常。

moveToFirst() 出错时返回 false。像这样做你的循环:

if (c.moveToFirst())

 do
 
   result = result + c.getString(iRow) + " " + c.getString(iName) + " " + c.getString + "\n"; 
  while (c.moveToNext())

如果事实确实如此,那么您可以处理为什么您的表没有行...

【讨论】:

这是一种非常冗长的迭代光标的方式。改用while (c.moveToNext()) ... 我的问题是我有 DATABASE_NAME 而不是 DATABASE_TABLE

以上是关于您如何在新活动中查看数据库的结果?的主要内容,如果未能解决你的问题,请参考以下文章

如何在新活动中正确打开 pdf?

单击 Listview 中的项目时,如何在新活动中从 Firebase 检索数据?

实时搜索结果显示在新页面上

无法在新活动中检索额外数据

GCP Pub/Sub,如果已有活动订阅,您能否在新订阅上重播旧消息

如何将结果数据从广播接收器发送到活动