2011-01-15 8 views
0

私はSQliteDatabase mDbを持っています。 1つの列しかなく、そのデータは以前に保存された入力用の文字列です。私はすべてのデータをmDbからAutoCompleteTextViewのString []に移入しようとしています(オートコンプリートは以前の入力に基づいています)。ここではStringをすべて取得するコードを示します。android:SQLiteDatabase rawQuery(データの取得)でエラーが発生しました

public String[] fetchAllSearch() { 
ArrayList<String> allSearch = new ArrayList<String>(); 
Cursor c = mDb.rawQuery("select * from " + DATABASE_TABLE, null); 
c.moveToFirst(); 
if (c.getCount() > 0) { 
    do { 
    allSearch.add(c.getString(c.getColumnIndex("KEY"))); 
    } while (c.moveToNext()); 
} 
String[] foo = (String[]) allSearch.toArray(); 
if (foo == null) { 
    foo = new String[] {""}; 
} 

return foo; 
} 

私CREATE_TABLEコマンドは

private static final String DATABASE_CREATE = "create table " + DATABASE_TABLE; 
.. 

public void onCreate(SQLiteDatabase db) { 

      db.execSQL(DATABASE_CREATE); 
     } 

ですが、何らかの理由でラインmDb.rawQuery(...)が私に与えている例外を「そのようなテーブルが見つかりません」、と私の人生私のために理由を理解できません。すべてのポインタ?

答えて

1

DATABASE_TABLEの値は何ですか?

テーブル名だけの場合、createステートメントは列を指定していないため、不完全です。

名前と列の定義の場合、選択は機能しません。

だから、あなたはあなたのSQLを試してみSQLite3のコマンドラインプログラムを使用してみてくださいDATABASE_TABLE

を使用し2つの場所で異なるテキストを使用する必要があります。例えば、

sqlite> create table foo; 
Error: near ";": syntax error 
sqlite> create table foo(col); 
sqlite> select * from foo(col); 
Error: near "(": syntax error 
sqlite> 
+0

ありがとう、ええ、私の作成ステートメントは、列を欠いていた、間違いなく夜遅く仕事を続ける – Jin

0

SELECT column_name FROM table_nameを使用してください。

*をクエリに使用しないでください。プライマリキーに関連する問題が発生する可能性があります。

関連する問題