Java 原因:android.database.sqlite.SQLiteException:没有这样的表:food(代码1 sqlite_错误):,编译时:按id asc 1从食品订单中选择*
当我编译程序时,我在Logcat中得到了这个错误 根据Logcat,这是导致错误的两个地方 一,Java 原因:android.database.sqlite.SQLiteException:没有这样的表:food(代码1 sqlite_错误):,编译时:按id asc 1从食品订单中选择*,java,android,android-sqlite,Java,Android,Android Sqlite,当我编译程序时,我在Logcat中得到了这个错误 根据Logcat,这是导致错误的两个地方 一, db=openOrCreateDatabase("Restaurants_DB", Context.MODE_PRIVATE, null); locations = loadLocationData(); addListenerOnButton(); initializeUI(); 二, 以下是日志: 04-26 14:48:55.336 21103-21103/c
db=openOrCreateDatabase("Restaurants_DB", Context.MODE_PRIVATE, null);
locations = loadLocationData();
addListenerOnButton();
initializeUI();
二,
以下是日志:
04-26 14:48:55.336 21103-21103/com.example.prudentmubasha.ainnaresto E/DATABASE OPERATIONS: Database created /Opened...
04-26 14:48:55.593 21103-21103/com.example.prudentmubasha.ainnaresto E/DATABASE OPERATIONS: Database created /Opened...
04-26 14:48:55.753 21103-21121/com.example.prudentmubasha.ainnaresto E/eglCodecCommon: glUtilsParamSize: unknow param 0x000082da
glUtilsParamSize: unknow param 0x000082da
04-26 14:48:58.743 21103-21103/com.example.prudentmubasha.ainnaresto E/SQLiteLog: (1) no such table: food
04-26 14:48:58.746 21103-21103/com.example.prudentmubasha.ainnaresto E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.prudentmubasha.ainnaresto, PID: 21103
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.prudentmubasha.ainnaresto/com.example.prudentmubasha.ainnaresto.MenuDrinksActivity}: android.database.sqlite.SQLiteException: no such table: food (code 1 SQLITE_ERROR): , while compiling: SELECT * FROM food order by id asc
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2892)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3027)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:101)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:73)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1786)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6656)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:823)
Caused by: android.database.sqlite.SQLiteException: no such table: food (code 1 SQLITE_ERROR): , while compiling: SELECT * FROM food order by id asc
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:901)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:512)
at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37)
at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:46)
at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1401)
at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1340)
at com.example.prudentmubasha.ainnaresto.MenuDrinksActivity.loadLocationData(MenuDrinksActivity.java:79)
at com.example.prudentmubasha.ainnaresto.MenuDrinksActivity.onCreate(MenuDrinksActivity.java:32)
at android.app.Activity.performCreate(Activity.java:7117)
at android.app.Activity.performCreate(Activity.java:7108)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1262)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2867)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3027)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:101)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:73)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1786)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6656)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:823)
04-26 14:48:55.336 21103-21103/com.example.prudentmubasha.ainnaresto E/数据库操作:创建/打开数据库。。。
04-26 14:48:55.593 21103-21103/com.example.prudentmubasha.ainnaresto E/数据库操作:创建/打开数据库。。。
04-26 14:48:55.753 21103-21121/com.example.prudentmubasha.ainnaresto E/eglcodeccon:glUtilsParamSize:unknow参数0x000082da
glUtilsParamSize:未知参数0x000082da
04-26 14:48:58.743 21103-21103/com.example.prudentmubasha.ainnaresto E/SQLiteLog:(1)没有这样的桌子:食物
04-26 14:48:58.746 21103-21103/com.example.prudentmubasha.ainnaresto E/AndroidRuntime:致命异常:main
流程:com.example.mubasha.ainnaresto,PID:21103
java.lang.RuntimeException:无法启动activity ComponentInfo{com.example.Prudentimubasha.ainnaresto/com.example.Prudentimubasha.ainnaresto.MenuDrinksActivity}:android.database.sqlite.SQLiteException:没有这样的表:食物(代码1 sqlite_错误):,编译时:SELECT*FROM food order by id asc
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2892)上
位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3027)
在android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
在android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:101)中
在android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:73)中
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1786)
位于android.os.Handler.dispatchMessage(Handler.java:106)
位于android.os.Looper.loop(Looper.java:164)
位于android.app.ActivityThread.main(ActivityThread.java:6656)
位于java.lang.reflect.Method.invoke(本机方法)
位于com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:823)
原因:android.database.sqlite.SQLiteException:没有这样的表:food(代码1 sqlite_错误):,编译时:按id asc从食品订单中选择*
位于android.database.sqlite.SQLiteConnection.nativePrepareStatement(本机方法)
位于android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:901)
位于android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:512)
位于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:46)
位于android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1401)
位于android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1340)
位于com.example.prudentimubasha.ainnaresto.MenuDrinksActivity.loadLocationData(MenuDrinksActivity.java:79)
位于com.example.mubasha.ainnaresto.MenuDrinksActivity.onCreate(MenuDrinksActivity.java:32)
位于android.app.Activity.performCreate(Activity.java:7117)
位于android.app.Activity.performCreate(Activity.java:7108)
位于android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1262)
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2867)
位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3027)
在android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
在android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:101)中
在android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:73)中
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1786)
位于android.os.Handler.dispatchMessage(Handler.java:106)
位于android.os.Looper.loop(Looper.java:164)
位于android.app.ActivityThread.main(ActivityThread.java:6656)
位于java.lang.reflect.Method.invoke(本机方法)
位于com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:823)
Activitymenudrinksavity
在AddDrinkActivity
之前被调用,所以此时不创建表。我建议在应用程序
类中初始化数据库。该类在任何活动之前调用,所以在开始使用数据库和表之前,将初始化数据库和创建表
public class AndroidApplication extends Application {
@Override
public void onCreate() {
// initialize database here
}
}
不要忘记在清单中注册应用程序类,如下所示:
<application
...
android:name="com.example.AndroidApplication">
...
</application>
...
改进的代码格式
04-26 14:48:55.336 21103-21103/com.example.prudentmubasha.ainnaresto E/DATABASE OPERATIONS: Database created /Opened...
04-26 14:48:55.593 21103-21103/com.example.prudentmubasha.ainnaresto E/DATABASE OPERATIONS: Database created /Opened...
04-26 14:48:55.753 21103-21121/com.example.prudentmubasha.ainnaresto E/eglCodecCommon: glUtilsParamSize: unknow param 0x000082da
glUtilsParamSize: unknow param 0x000082da
04-26 14:48:58.743 21103-21103/com.example.prudentmubasha.ainnaresto E/SQLiteLog: (1) no such table: food
04-26 14:48:58.746 21103-21103/com.example.prudentmubasha.ainnaresto E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.prudentmubasha.ainnaresto, PID: 21103
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.prudentmubasha.ainnaresto/com.example.prudentmubasha.ainnaresto.MenuDrinksActivity}: android.database.sqlite.SQLiteException: no such table: food (code 1 SQLITE_ERROR): , while compiling: SELECT * FROM food order by id asc
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2892)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3027)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:101)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:73)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1786)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6656)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:823)
Caused by: android.database.sqlite.SQLiteException: no such table: food (code 1 SQLITE_ERROR): , while compiling: SELECT * FROM food order by id asc
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:901)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:512)
at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37)
at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:46)
at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1401)
at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1340)
at com.example.prudentmubasha.ainnaresto.MenuDrinksActivity.loadLocationData(MenuDrinksActivity.java:79)
at com.example.prudentmubasha.ainnaresto.MenuDrinksActivity.onCreate(MenuDrinksActivity.java:32)
at android.app.Activity.performCreate(Activity.java:7117)
at android.app.Activity.performCreate(Activity.java:7108)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1262)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2867)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3027)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:101)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:73)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1786)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6656)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:823)
public class AndroidApplication extends Application {
@Override
public void onCreate() {
// initialize database here
}
}
<application
...
android:name="com.example.AndroidApplication">
...
</application>