2011-07-14 11 views
0

データベースを話しているものcatlog見つけることができない - 失敗1(近くに「テキスト」:シンタックスエラー)0x25c768に準備するとき...Android、SQLデータベースのエラー1構文エラー?およそ

これは、ときに私LogCatに表示エラーです私のアプリを実行しようとします。私は、データベースを設定する次のコードを持っています:

private static final String DATABASE_NAME = "recipesDB"; 
private static final String DATABASE_TABLE = "recipes"; 
private static int DATABASE_VERSION = 1; 

public static final String KEY_NAME = "name"; 
public static final String KEY_TYPE = "type"; 
public static final String KEY_INGREDIENTS = "ingredients"; 
public static final String KEY_NOTES = "notes"; 
public static final String KEY_BOIL = "boil"; 
public static final String KEY_PRIMARY = "primary"; 
public static final String KEY_SECONDARY = "secondary"; 
public static final String KEY_ROWID = "_id"; 
private DatabaseHelper mDbHelper; // DatabaseHelper is an inner class extending SQLiteOpenHelper 

private SQLiteDatabase mDb; 

private static final String DATABASE_CREATE = 
    "create table " + DATABASE_TABLE + " (" 
    + KEY_ROWID + " integer primary key autoincrement, " 
    + KEY_INGREDIENTS + " text not null, " 
    + KEY_NOTES + " text not null, " 
    + KEY_BOIL + " text not null, " 
    + KEY_PRIMARY + " text not null, " 
    + KEY_SECONDARY + " text not null); "; 

private final Context cntx; 

public recipesDB(Context cnt){ 
    this.cntx = cnt; 
} 

私はかなりコードと構文が良いと思われるので、私はこのエラーが表示されています。私は携帯電話でアプリケーションを実行し、activityListを開くボタンをクリックするとランタイムエラーが発生します。開いて、などにSQLExpectionをキャッチするコードは表示されません。

どのような提案がありますか?

答えて

4

「プライマリ」という列の名前を変更してください。プライマリキーautoincrement ...のように予約語であり、SQLiteがチョークする可能性があります。

+0

それはありがとう! – Eric

+0

それはありがとう!しかしもう1つの質問ですが、上のコードからわかるように、KEY_NAMEとKEY_TYPEをデータベーススクリプトに追加するのを忘れてしまいました。今私は自分の携帯電話でアプリケーションを実行すると、DDVMに「No such column:name」というエラーが表示されます。これは、データベースがすでに構築されており、coloumnsを追加できないためですか? – Eric

+0

列を追加できますが、ALTER TABLE ...コマンドを使用して列を明示的に変更する必要があります。データベースのバージョンをインクリメントし、ALTER TABLEをonUpgrade ...メソッドに置くことで、ヘルパークラスでこれを行うことができます。 – antlersoft