从db获取数据时出错

时间:2012-09-11 13:31:13

标签: android

我正在尝试从我的数据库中获取数据。我已经有50-60个方法用于在我的数据库上执行操作,并且所有这些方法都运行良好。今天我创造了另一种方法......但它不起作用! Idk也许是因为我使用相同光标的2倍.. Idk ...这是产生错误的代码:

public ArrayList<String> getValueFromTab(String tipoGrafico){

    SQLiteDatabase sqlDB = null;
    Cursor data = null;
    String ascissa=null;
    String tabella=null;
    ArrayList<String>dati=new ArrayList<String>();

    try {
        sqlDB = openDataBase(SQLiteDatabase.NO_LOCALIZED_COLLATORS);
        data=sqlDB.rawQuery("SELECT TABELLA, ASCISSA FROM cpm_analysis WHERE CATEGORIA='"+tipoGrafico+"' AND ABILITATO <>'no'", null);

        if(data.getCount()==0){
            data=null;
        }else{
            while(data.moveToNext()){
                tabella=data.getString(0);
                ascissa=data.getString(1);
            }
            data=null;
        }
        data=sqlDB.rawQuery("SELECT DISTINCT"+ascissa+" FROM "+tabella+"", null);

        if(data.getCount()==0){
            data=null;
        }else{
            while(data.moveToNext()){
                dati.add(data.getString(1));
            }
            data=null;
        }
        return dati;

    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }finally {
        if (data != null)
            data.close();
        if (sqlDB != null)
            sqlDB.close();
    }

    return null;

}

我在第一个rawquery()之后发生异常。

这是另一种完美运作的方法:

    SQLiteDatabase sqlDB = null;
    Cursor data = null;

    try {
        sqlDB = openDataBase(SQLiteDatabase.NO_LOCALIZED_COLLATORS);
        String[] posizioni=new String[]{"Grafici UL", "Grafici UR", "Grafici DL", "Grafici DR"};
        String[] categorie=new String[posizioni.length];
        String categorieTemp="";
        for(int i=0; i<posizioni.length; i++){
            data=sqlDB.rawQuery("SELECT CATEGORIA FROM cpm_analysis WHERE AREA_DISPLAY='"+posizioni[i]+"' AND ABILITATO <> 'no' ", null);
            if(data.getCount()==0){
                data=null;}

            else{   
            while(data.moveToNext()){
                categorieTemp=data.getString(0);
                categorie[i]=categorieTemp;
            }
            data=null;
            }
        }
        return categorie;
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }finally {
        if (data != null)
            data.close();
        if (sqlDB != null)
            sqlDB.close();
    }

    return null;

}

错误在哪里?对不起,我的英文不好,并提前致谢

修改

请帮助我&gt;。&lt;我疯了......

重新编辑

好的,我解决了。 Idk为什么但是我不能从一个活动中调用这个方法,所以我之前在Activity中调用了它。它没有打开db .. Idk为什么@ _ @现在它可以工作......完全是Ty:)

2 个答案:

答案 0 :(得分:2)

在DISTINCT和列名之间提供适当的空格。

 data=sqlDB.rawQuery("SELECT DISTINCT "+ascissa+" FROM "+tabella+"", null);

答案 1 :(得分:1)

data=sqlDB.rawQuery("SELECT TABELLA, ASCISSA FROM cpm_analysis WHERE CATEGORIA='"+tipoGrafico+"' AND ABILITATO <>'no'", null);

也是如此

这一部分 ... AND ABILITATO <>'no'", null); 没有合适的空间&lt;&gt;同样。

相关问题