Android I';我在创建数据库时遇到一些错误
我正在尝试使用教程创建数据库。我还是android开发的新手,所以这可能很简单,但仍在学习中。这就是我得到的错误:Android I';我在创建数据库时遇到一些错误,android,database,Android,Database,我正在尝试使用教程创建数据库。我还是android开发的新手,所以这可能很简单,但仍在学习中。这就是我得到的错误: 07-19 14:37:18.235: E/SQLiteLog(9089): (1) no such table: grocery 07-19 14:37:18.245: E/AndroidRuntime(9089): FATAL EXCEPTION: main 07-19 14:37:18.245: E/AndroidRuntime(9089): Process: com.dus
07-19 14:37:18.235: E/SQLiteLog(9089): (1) no such table: grocery
07-19 14:37:18.245: E/AndroidRuntime(9089): FATAL EXCEPTION: main
07-19 14:37:18.245: E/AndroidRuntime(9089): Process: com.dusandimitrijevic.grocerylist, PID: 9089
07-19 14:37:18.245: E/AndroidRuntime(9089): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.dusandimitrijevic.grocerylist/com.dusandimitrijevic.grocerylist.MainActivity}: android.database.sqlite.SQLiteException: no such table: grocery (code 1): , while compiling: SELECT _id, title, price FROM grocery
07-19 14:37:18.245: E/AndroidRuntime(9089): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2693)
07-19 14:37:18.245: E/AndroidRuntime(9089): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2758)
07-19 14:37:18.245: E/AndroidRuntime(9089): at android.app.ActivityThread.access$900(ActivityThread.java:177)
07-19 14:37:18.245: E/AndroidRuntime(9089): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1448)
07-19 14:37:18.245: E/AndroidRuntime(9089): at android.os.Handler.dispatchMessage(Handler.java:102)
07-19 14:37:18.245: E/AndroidRuntime(9089): at android.os.Looper.loop(Looper.java:145)
07-19 14:37:18.245: E/AndroidRuntime(9089): at android.app.ActivityThread.main(ActivityThread.java:5942)
07-19 14:37:18.245: E/AndroidRuntime(9089): at java.lang.reflect.Method.invoke(Native Method)
07-19 14:37:18.245: E/AndroidRuntime(9089): at java.lang.reflect.Method.invoke(Method.java:372)
07-19 14:37:18.245: E/AndroidRuntime(9089): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1400)
07-19 14:37:18.245: E/AndroidRuntime(9089): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1195)
07-19 14:37:18.245: E/AndroidRuntime(9089): Caused by: android.database.sqlite.SQLiteException: no such table: grocery (code 1): , while compiling: SELECT _id, title, price FROM grocery
07-19 14:37:18.245: E/AndroidRuntime(9089): at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
07-19 14:37:18.245: E/AndroidRuntime(9089): at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:1093)
07-19 14:37:18.245: E/AndroidRuntime(9089): at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:670)
07-19 14:37:18.245: E/AndroidRuntime(9089): at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
07-19 14:37:18.245: E/AndroidRuntime(9089): at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:59)
07-19 14:37:18.245: E/AndroidRuntime(9089): at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37)
07-19 14:37:18.245: E/AndroidRuntime(9089): at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44)
07-19 14:37:18.245: E/AndroidRuntime(9089): at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1440)
07-19 14:37:18.245: E/AndroidRuntime(9089): at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1287)
07-19 14:37:18.245: E/AndroidRuntime(9089): at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1158)
07-19 14:37:18.245: E/AndroidRuntime(9089): at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1326)
07-19 14:37:18.245: E/AndroidRuntime(9089): at com.dusandimitrijevic.data.GroceryDbAdapter.fetchAllItems(GroceryDbAdapter.java:145)
07-19 14:37:18.245: E/AndroidRuntime(9089): at com.dusandimitrijevic.grocerylist.MainActivity.fillData(MainActivity.java:79)
07-19 14:37:18.245: E/AndroidRuntime(9089): at com.dusandimitrijevic.grocerylist.MainActivity.onCreate(MainActivity.java:59)
07-19 14:37:18.245: E/AndroidRuntime(9089): at android.app.Activity.performCreate(Activity.java:6289)
07-19 14:37:18.245: E/AndroidRuntime(9089): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
07-19 14:37:18.245: E/AndroidRuntime(9089): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2646)
07-19 14:37:18.245: E/AndroidRuntime(9089): ... 10 more
我仍在学习,因此任何帮助或建议都将受到欢迎 在数据库中\u CREATE query删除引起错误的字符串中的分号
private static final String DATABASE_CREATE =
"create table grocery (_id integer primary key autoincrement, "
+ "title text not null, price text not null)";//removed which was semicolon inside it
最可能的情况是,您更改了数据库中定义的SQL语句,然后更改了数据库版本 更改数据库版本时,将调用onUpgrade(),并调用其中的SQL语句:
db.execSQL("DROP TABLE IF EXISTS notes");
这将尝试删除可能不存在的表
然后调用onCreate()
,您尝试创建一个表,但是由于它可能已经存在,所以不会发生任何事情,但是您的表仍然是在版本1中创建的表
因此,解决方案可以是:
db.execSQL("DROP TABLE IF EXISTS notes");
和使用:
db.execSQL("DROP TABLE IF EXISTS grocery");
在SQL语句末尾加上分号绝对是合法的,这对我来说很有效,但是你能帮我做点别的吗。在将适配器设置为listView时,我得到了nullpointerexception,并且在我尝试创建SimpleCursorAdapter的方法中,它被解压。这就是我得到错误的方法:@SuppressWarnings(“deprecation”)SimpleCursorAdapter items=new SimpleCursorAdapter(This,R.layout.list_item_行,itemsCursor,from,to);setAdapter(项目);}方法被称为fillDataIt似乎是正确的。然而,在评论中很难形成一个问题和答案。我建议你问一个新问题。我已经提出了一个新问题。请你看一下,看看能不能帮我一下。这是你的电话号码
db.execSQL("DROP TABLE IF EXISTS grocery");