2011-06-24 15 views
0

assetsディレクトリのDBのEclipseでrawqueryでエラーが発生します。 DBはテーブルとデータで「プリロード」されており、SQL文字列、最初のコメント行はSQLite DBブラウザで動作します。コードにSQL文字列をコピーし、引用符を削除するように変更するとエラーになります。以下のコードは '標準'パブリッククラスのものです。DataBaseHelperはSQLiteOpenHelperを拡張しました{。私はandroid/javaの新人です。ご協力いただきありがとうございます。SQLiteのrawquery

 public Cursor getAllSectionDescriptions(String DBtable, String source){ 
    //Works in DB: SELECT "Description" FROM "SectionProps" WHERE Source = "UK"   
    //String q = "SELECT Description FROM SectionProps WHERE Source = UK " ; <= errors in code 
    String q = "SELECT Description FROM " + DBtable + " WHERE Source = " + source + " "; //<== errors in code 
    //06-24 16:53:03.373: ERROR/AndroidRuntime(1000): Caused by: android.database.sqlite.SQLiteException: no such table: SectionProps: , while compiling: SELECT Description FROM SectionProps WHERE Source = UK 

    Cursor mCursor = myDataBase.rawQuery(q, null); 
    mCursor.moveToFirst(); 
    return mCursor; 

}//end cursor 

答えて

0

オブジェクト名を二重引用符で囲む必要があります。

String q = "SELECT \"Description\" FROM \"" + DBtable + "\" WHERE Source = \"" + source + "\" "; 

注クエリを実行するには、エスケープ文字「\」

0

が先行し、二重引用符は、2つの方法があります:実行db.rawQuery方法はdb.queryを実行しますので、これを実行したいと思いますこの方法は、すべての部門を取得するために、生のクエリを実行するには、次の

Cursor getAllDepts() 
    { 
    SQLiteDatabase db=this.getReadableDatabase(); 
    Cursor cur=db.rawQuery("SELECT "+colDeptID+" as _id, 
     "+colDeptName+" from "+deptTable,new String [] {}); 

    return cur; 
    } 

rawQuery方法は、2つのパラメータがあります:WHERE句がselect文をノートに含まれている場合、引数:文字列のクエリ:select文の文字列[]選択引数をクエリの結果がCursorで返されます。オブジェクト。 SELECTステートメントで、テーブルの主キー列(ID列)に_id以外の名前がある場合、SELECT [列名]の形式でエイリアスを使用する必要があります。なぜなら、Cursorオブジェクトは常に、キー列の名前が_idの場合、または例外がスローされます。

関連する問題