Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android I';我在创建数据库时遇到一些错误_Android_Database - Fatal编程技术网

Android I';我在创建数据库时遇到一些错误

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

我正在尝试使用教程创建数据库。我还是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.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");