0

授業期間に関連するデータを Android プロジェクトに保存する必要がありました。選択肢を検討した結果、SQL データベースが適切な選択であると考えました。残念ながら、ステートメントで実際にデータベースを開くことができないようです。私のオープン データベース ステートメント文字列は次のようになります。

"create table "+ DATABASE_PERIOD+" (_id integer primary key autoincrement,"
+KEY_CLASSTITLE+" text not null, "+KEY_PERIOD+" text not null, 
"+KEY_XPERIODS+" text not null, "+KEY_DOUBLEPERIODS+" text not null);

Android Web サイトの Notepad プロジェクトに基づいています。フィールドをいくつか追加しましたが、データベースを開くことができません。エラー メッセージやその他の種類の情報が必要な場合は、取得しようとします (SQL を使用するのはこれが初めてなので、これを修正するために何が必要かはよくわかりません)。前もって感謝します!

私が得ているエラーメッセージは次のようになります:

android.database.sqlite.SQLiteException: no such table: periodData: , while
compiling: SELECT DISTINCT _id, title, period, xPeriods, doublePeriods FROM
periodData WHERE _id = -1

そこに書かれているように、私はSQLiteを使用しています。

データベース ヘルパー クラスのテーブルにデータを入れるコード:

ContentValues initialValues = new ContentValues();
initialValues.put(KEY_CLASSTITLE, title);
initialValues.put(KEY_PERIOD, period);
initialValues.put(KEY_XPERIODS, xPeriods);
initialValues.put(KEY_DOUBLEPERIODS, doublePeriods);

return mDb.insert(DATABASE_PERIOD, null, initialValues);

呼び出しが正しくないことを確認するために、プライベートな静的文字列の使用を開始しました (キャッチしてくれた Barak に感謝します!)

4

2 に答える 2

1

http://developer.android.com/guide/topics/data/data-storage.html#dbで開発トピックを確認してください

データベースを開くのに役立つDbHelperクラスを作成すると、コードは次のようになります。

SQLiteDatabase db = dbHelper.getReadableDatabase();
Cursor c = qb.query(db, projection, selection, selectionArgs, null, null, sortOrder);

これがお役に立てば幸いです。

于 2012-04-10T23:18:28.643 に答える
1

あなたの問題はテーブル名です(エラーメッセージが示すように)。表示するコードから、「期間」というテーブルを作成しました。それでも、テーブル名「periodData」を使用してクエリを実行しようとします。

それを修正する2つの方法:

1) データベースのテーブル名を periodData に変更します (データベースを再作成する必要があるため、より困難です)。

2) クエリのテーブル名を「periodData」から「period」に変更します。

于 2012-04-11T04:12:21.510 に答える