2012-03-21 6 views
0

私はSQLiteデータベースを作成して通信するアプリケーションを構築しています。未使用の列のAndroidエラー

ただし、アプリケーションがデータベースと接続するたびに、エラーのためにシャットダウンされます。

(私の目に)関連するエラーがこれらのされています。私が使用チュートリアルで

03-21 07:50:29.308: E/AndroidRuntime(554): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.dummies.android.taskreminder/com.dummies.android.taskreminder.ReminderListActivity}: java.lang.IllegalArgumentException: column '_id' does not exist 

03-21 07:50:29.308: E/AndroidRuntime(554): Caused by: java.lang.IllegalArgumentException: column '_id' does not exist 

、ID列は「_id」という名前ですが、私は今までそれを使用する前に、「ReminderID」へと改名しました。私のバージョンでは "_id"という言葉は一度も使われていないし、変数 "ReminderID"を "_id"に改名すると同じエラーが出る。

答えて

0

データベースには '_id'という列はなくてもSimpleCursorAdaptorに返される必要があります。エイリアスでこれを行うことができます。 _idフィールドは必ずデータがカーソルハンドルがあなたのSimpleCursorAdapterを照会するには

ReminderID,XYZ ABC are your columns... then 

場合は、アダプタとadapterviewsなど によって正しく処理することが可能にするために一意のキーとして使用され、データベースrawQueryでこれを行うことができます...

SELECT ReminderID as _id,XYZ,ABC FROM MY_TABLE 
+0

を照会できることではありません次に、どうやってhクエリを変更するには? パブリックCursor fetchAllReminders(){ \t return mDb.query(DATABASE_TABLE、新しい文字列[] {KEY_ROWID、KEY_TITLE、KEY_BODY、KEY_DATE_TIME}、null、null、null、null、null) は} \t 公共カーソルfetchReminder(長いROWID)は{ \tカーソルmCursor = mDb.query(真、DATABASE_TABLE、新しいString [] {KEY_ROWID、KEY_TITLE、KEY_BODY、KEY_DATE_TIME}、KEY_ROWID + "=" + \t SQLExceptionがスローrowId、null、null、null、null、null); \t if(mCursor!= null){ \t \t mCursor.moveToFirst(); \t} \t return mCursor; } –

+0

エイリアシングを使用している場合..このように使用できます.. new String [] = {RemainderId、XYZ、ABC} ...同じです..String [] = {RemainderId _id、XYZ、ABC} < - - 残りのidの後にスペースがあり、コンマではないことを確認してください。それは "RemainderId as _id" – 5hssba

1

_idはアンドロイドの規約であり、例えばcursorAdapterはそれを必要とします。

0

_id列は私のように特定のレコードとすべてのレコードのための1つを取得するための方法を持っている場合は、テーブルは、あなたが鍋あなたにキーを_idするには、この列または他の削除が

関連する問題