IllegalArgumentException:您必须提供SQL字符串

时间:2012-07-19 02:23:57

标签: android sqlite

当我尝试从我的sqlite数据库请求信息时,我收到此错误:

07-19 02:17:10.835: E/AndroidRuntime(689): java.lang.RuntimeException: Unable to start activity ComponentInfo{de.bodprod.dkr/de.bodprod.dkr.MediNotmediList}: java.lang.IllegalArgumentException: You must supply an SQL string

我的数据库请求:

public ArrayList<HashMap<String,Object>> getAllNotmedis(){
    ArrayList<HashMap<String,Object>> notmediList = new ArrayList<HashMap<String,Object>>();
    String selectQuery = "SELECT medi_id, medi_wirk, medi_handel FROM dkr_medi_liste ORDER BY medi_wirk";
    Log.d("ALLNOTMEDIS",selectQuery);
    SQLiteDatabase db = this.getWritableDatabase();
    Cursor cursor = db.rawQuery(selectQuery, null);
    HashMap<String , Object> notmedi_item;
    if (cursor.moveToFirst()) {
        do {
            notmedi_item = new HashMap<String, Object>();
            notmedi_item.put("sql_id", Integer.parseInt(cursor.getString(0)));
            notmedi_item.put("wirk", cursor.getString(1));
            notmedi_item.put("handel", unescape(cursor.getString(2)));
            notmediList.add(notmedi_item);
        } while (cursor.moveToNext());
    }
    cursor.close();
    db.close();
    return notmediList;
} 

这一行出错:

    SQLiteDatabase db = this.getWritableDatabase();

为什么我会成为这个错误?数据库存在并充满了数据......

3 个答案:

答案 0 :(得分:1)

错误发生在onCreate部分。

我尝试使用db.execSQL插入一个空行。

由于SQLiteDatabase db = this.getWritableDatabase();调用了onCreate方法,因此我在此行中收到错误。

答案 1 :(得分:0)

java.lang.IllegalArgumentException: You must supply an SQL string

如果在rawQuery方法中传递了无效的Sql Query语句,则会发生上述异常。以下声明中一定存在问题:

= "SELECT medi_id, medi_wirk, medi_handel FROM dkr_medi_liste ORDER BY medi_wirk";

答案 2 :(得分:0)

您应该创建数据库适配器,作为应用和数据库之间的连接