2012-04-09 10 views
3

私はすでに "LocalLogin"というテーブルが入っていて、正しく設定されていて問題なくクエリできます私の新しいテーブル "PersonList"と同じ方法です。私は私ののonCreateメソッドで作成したクエリを実行するが、私はいくつかの値を選択するために、PersonListにクエリを実行しようとすると、しかし、私はエラーアンドロイド "android.database.sqlite.SQLiteException:データベース上でクエリを実行するときにそのようなテーブルがありません"エラー

android.database.sqlite.SQLiteException: no such table: PersonList: , while compiling: SELECT ... 

を取得することは、私のテーブルが作成されなかったというアイデアを提供しますSQLiteOpenHelperクラス。 LocalLoginと同じデータベース名を持つ可能性がありますか?

データベースアダプタ

public class GoingOutPersonListDbAdapter { 
private static final String DATABASE_NAME = "GoingOutData"; 
private static final String DATABASE_TABLE_PERSONLIST = "PersonList"; 
private static final int DATABASE_VERSION = 1; 

public static final String PERSONLIST_ID = "PersonList_id"; 
public static final String PERSONLIST_LOGIN = "Login"; 
public static final String PERSONLIST_PASSWORD = "Password"; 

private static final String TAG = "Debugstring"; 

private PersonListDatabaseHelper mPersonListDbHelper; 
private SQLiteDatabase mDb; 

private static final String DATABASE_CREATE = 
    "CREATE Table " + DATABASE_TABLE_PERSONLIST+ " (" 
    + PERSONLIST_ID + " integer PRIMARY KEY Autoincrement, " 
    + PERSONLIST_LOGIN + " text NOT NULL," 
    + PERSONLIST_PASSWORD + " text NOT NULL);"; 

private final Context mCtx; 

private static class PersonListDatabaseHelper extends SQLiteOpenHelper { 
    PersonListDatabaseHelper(Context context) { 
     super(context, DATABASE_NAME, null, DATABASE_VERSION); 
    } 
    @Override 
    public void onCreate(SQLiteDatabase db) { 
     Log.d(TAG,DATABASE_CREATE); 
     db.execSQL(DATABASE_CREATE); 
    } 
} 

public GoingOutPersonListDbAdapter(Context ctx) { 
    this.mCtx = ctx; 
} 

public GoingOutPersonListDbAdapter open() throws SQLException { 
    mPersonListDbHelper = new PersonListDatabaseHelper(mCtx); 
    mDb = mPersonListDbHelper.getWritableDatabase(); 
    return this; 
} 

public Cursor searchPerson(String searchString) { 
    return mDb.query(DATABASE_TABLE_PERSONLIST, new String[] {PERSONLIST_ID, PERSONLIST_LOGIN, PERSONLIST_PASSWORD}, searchString, null, null, null, null); 
} 

}私の活動のクラスで

クラス::あなたは 'プライベート静的最終文字列DATABASE_CREATE' を宣言し

private GoingOutPersonListDbAdapter mPersonListDbHelper; 

... 

mPersonListDbHelper = new GoingOutPersonListDbAdapter(this); 
mPersonListDbHelper.open(); 

... 

//loginEditText is properly set 
Cursor personList = mPersonListDbHelper.searchPerson(GoingOutPersonListDbAdapter.PERSONLIST_LOGIN + " = '" + loginEditText + "'"); 
startManagingCursor(personList); 

答えて

5

新しいテーブルを追加する場合は、データベースのバージョンを増やす必要があるため、onUpdateが実行され、データベースは新しいテーブルで再作成されます。

+0

I "は公共ボイドONUPGRADE(SQLiteDatabase DB、INT oldVersion、INT NEWVERSION){ \t \t \t db.execSQL(DATABASE_CREATE); \t \t} \t \t @Override \t \t" を添加し、2にデータベースのバージョンを変更したが、私まだ同じエラーがあります –

+0

魅力のように動作しますが、私はどちらのデータベースアダプターでもデータベースのバージョンを増やしました。明らかにしてはいけませんでした。 –

+0

はうまく動作します –

0

はここに関連するコードです二度。私は実際にこのコンパイルに驚いていますか?つまり、db.execSQL(DATABASE_CREATE)にロギングステートメントを追加する必要があります。それが実際に成功したかどうかを確認する。

+0

私のコードを編集しました。私は大きな無関係な部分をここにあまりポストしないようにしておき、コピー用紙を使って間違っていた。 –

+0

十分に公正な;ただし、テーブルが作成されているかどうかを確認する必要があります。あなたの文法は私には似ていますが、それ以外の理由で静かに失敗する可能性があります。つまり、テーブルが存在しないことを意味します。 –

関連する問題