在Android中从SQLite获取数据时出现问题

时间:2011-07-03 06:58:29

标签: android database sqlite

我关注this tutroial about using your own SQLite database。我按照教程中的描述完成了这些步骤:

  • 准备我的数据库
  • 将同一个EXACT DataBaseHelper类复制到我的项目包中。您可以看到类代码there
  • 然后,我刚刚向DataBaseHelper类添加了一个方法fetchData。它只是获取一个具有给定名称的整个表:

    public Cursor fetchData(String table) {
    String[] selectionArgs = new String[] {"*"};
    return myDataBase.query(table, null, null, selectionArgs, null, null, null);
    }
    
  • 之后,在我的一个活动课程中,我做到了这一点:

    DataBaseHelper myDbHelper;
    myDbHelper = new DataBaseHelper(this);
    
    try { 
    
        myDbHelper.createDataBase();
    
    } catch (IOException ioe) {
    
        throw new Error("Unable to create database");
    
    }
    try {
    
        myDbHelper.openDataBase();
    
    } catch (SQLException sqle) {
    
        throw sqle;
    
    }
    
    TextView txt = (TextView) findViewById(R.id.txt);
    try {
    //I will use my method to fetch a table named: myTable      
        Cursor c = myDbHelper.fetchData("myTable"); 
        if((Object)c.getCount() != null)
            txt.setText(c.getCount());
        else
            txt.setText("null");
    } catch(Exception e) {
        txt.setText("error");
    
    } 
    

但是,我在TextView中不断收到'错误'。我的方式有问题吗?

3 个答案:

答案 0 :(得分:1)

我的问题与SQLite无关。这是一个愚蠢的错误: - \

错误在第二行:

if((Object)c.getCount() != null)
    txt.setText(c.getCount());

必须是这样的:

    txt.setText(""+c.getCount());

setText()方法接受ChaSequencegetCount()方法返回Integer,这些方法不兼容。你可以通过添加空字符串来解决这个问题:)

谢谢大家。

答案 1 :(得分:0)

public Cursor fetchData(String table) {
     return myDataBase.query(table, null, null, null, null, null, null);
}

似乎你对selectionArgs参数有错误的想法。在documentation中,它说:

  

您可以在选择中包含?   将被来自的值替换   selectionArgs,为了他们   出现在选择中。价值   将被绑定为字符串。

答案 2 :(得分:0)

您尝试将int转换为Object,然后将转换值与null进行比较。我会说你的代码可能会在那里破解。