店舗名を表示するかどうかを定義するために、LocationCodeという列から値を取得しようとしました。しかし、そのような列はないというエラーがあります。綴り間違いはありません。android.database.sqlite.SQLiteException:そのような列がありませんShopName
そして、これはコードです:
public List<String> getQuotes() {
List<String> list = new ArrayList<>();
Cursor cursor = database.rawQuery("SELECT ShopName,LocationCode FROM WhereToEat WHERE LocationCode = 'WhiteFarm' ", null);
cursor.moveToFirst();
while (!cursor.isAfterLast()) {
list.add(cursor.getString(0));
cursor.moveToNext();
}
cursor.close();
return list;
}
ありがとうございました。
エラーログ
致命的な例外:メイン プロセス:com.projects.randomcreation.wheretoeat、PID:2122 java.lang.RuntimeException:活性 ComponentInfo {com.projects.randomcreationを開始できません。 wheretoeat/com.projects.randomcreation.wheretoeat.databases.DatabaseGrabber} android.database.sqlite.SQLiteException:そのようなカラム:ShopName (コード1)、コンパイル中: FROM ShopName、LocationCodeを選択WhereToEat WHERE LocationCode = 'ホワイトファーム ' でandroid.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416) でandroid.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) android.app.ActivityThread.-wrap11(ActivityThread.java)で でandroid.app.ActivityThread $ H.handleMessage(ActivityThread.java:1344) とandroid.os.Handler.dispatchMessage(Handler.java:102) とandroid.os.Looper.loop(Looper.java:148) android.app.ActivityThread.main(ActivityThread.java:5417) at java.lang.reflect.Method.invoke(ネイティブ・ミーcom.android.internal.os.ZygoteInit.mainでTHOD) でcom.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:726) (ZygoteInit.java:616)によって引き起こさ :アンドロイド.database.sqlite.SQLiteException:そのようなカラム: ShopName(コード1)、コンパイル中:WhereToEat FROM ShopName、LocationCode を選択LocationCode = 'WhiteFarm' でandroid.database.sqlite.SQLiteConnection.nativePrepareStatement(ネイティブ メソッド) at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:887) でandroid.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:498) でandroid.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)android.database.sqlite.SQLiteProgramで 。(SQLiteProgram .java:58) android.database.sqlite.SQLiteQueryで(SQLiteQuery.java:37) でandroid.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44) android.database.sqliteました。 SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1316) at android.datab ase.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1255) ( )com.projects.randomcreation.wheretoeat.databases.DatabaseAccess.getQuotes(DatabaseAccess。Javaの:65) android.appでandroid.app.Activity.performCreateで com.projects.randomcreation.wheretoeat.databases.DatabaseGrabber.onCreate(DatabaseGrabber.java:27) (Activity.java:6237) で。 Instrumentation.callActivityOnCreate android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)android.appで でandroid.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)で(Instrumentation.java:1107) 。 ActivityThread.-wrap11(ActivityThread.java) at android.app.ActivityThread $ H.handleMessage android.os.Looper.loop(Looper.java:148)でandroid.os.Handler.dispatchMessage(Handler.java:102)で(ActivityThread.java:1344) android.app.ActivityThread.main(ActivityThread.java:5417) at java.lang.reflect.Method.invoke(ネイティブメソッド) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java :726) com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
完全にDatabaseOpenHelper
のコードpublic class DatabaseAccess {
private SQLiteOpenHelper openHelper;
private SQLiteDatabase database;
private static DatabaseAccess instance;
/**
* Private constructor to aboid object creation from outside classes.
*
* @param context
*/
public DatabaseAccess(Context context) {
this.openHelper = new DatabaseOpenHelper(context);
}
/**
* Return a singleton instance of DatabaseAccess.
*
* @param context the Context
* @return the instance of DabaseAccess
*/
public static DatabaseAccess getInstance(DatabaseGrabber context) {
if (instance == null) {
instance = new DatabaseAccess(context);
}
return instance;
}
/**
* Open the database connection.
*/
public void open() {
this.database = openHelper.getWritableDatabase();
}
/**
* Close the database connection.
*/
public void close() {
if (database != null) {
this.database.close();
}
}
/**
* Read all quotes from the database.
*
* @return a List of quotes
*/
public List<String> getQuotes() {
List<String> list = new ArrayList<>();
Cursor cursor = database.rawQuery("SELECT ShopName,LocationCode FROM WhereToEat WHERE LocationCode = '+WhiteFarm+' ", null);
cursor.moveToFirst();
while (!cursor.isAfterLast()) {
list.add(cursor.getString(0));
cursor.moveToNext();
}
cursor.close();
return list;
}
}
更新:
CREATE TABLE "WhereToEat" (
`ShopName` TEXT,
`Location` TEXT,
`LocationCode` TEXT,
`Photo` BLOB);
私は列が存在すると信じています。
エラーログをしてください行っているものと同様のいくつかのサンプルクエリを見つけることができます。コピー貼り付けの正確なエラー文 – Shreyans
'shopName'は最近追加した列ですか? – Karakuri
データベースは静的で、ShopNameは最初に存在します –