Android 访问数据库给了我力量

Android 访问数据库给了我力量,android,android-sqlite,Android,Android Sqlite,我正在尝试从名为item\u table的数据库表中检索数据。我有一个列名为Category,其中包含一个名为的值。我试图使用Where子句来检索数据,但是我得到了一个名为的错误,没有像意大利面食这样的列。请一步一步地引导我。我的代码和错误日志如下: items=db.retrieve_item_details(getcategory); 错误日志 E/AndroidRuntime(4070): FATAL EXCEPTION: main E/AndroidRuntime(4070

我正在尝试从名为
item\u table
的数据库表中检索数据。我有一个列名为
Category
,其中包含一个名为
的值。我试图使用
Where
子句来检索数据,但是我得到了一个名为
的错误,没有像意大利面食这样的列。请一步一步地引导我。我的代码和错误日志如下:

items=db.retrieve_item_details(getcategory);
错误日志

   E/AndroidRuntime(4070): FATAL EXCEPTION: main
   E/AndroidRuntime(4070): Process: com.alrimal, PID: 4070
   E/AndroidRuntime(4070): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.alrimal/com.alrimal.MenuItemsActivity}: android.database.sqlite.SQLiteException: no such column: Pasta (code 1): , while compiling: SELECT * FROM item_table WHERE Category=Pasta
   E/AndroidRuntime(4070):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2176)
   E/AndroidRuntime(4070):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2226)
   E/AndroidRuntime(4070):  at android.app.ActivityThread.access$700(ActivityThread.java:135)
   E/AndroidRuntime(4070):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1397)
   E/AndroidRuntime(4070):  at android.os.Handler.dispatchMessage(Handler.java:102)
   E/AndroidRuntime(4070):  at android.os.Looper.loop(Looper.java:137)
   E/AndroidRuntime(4070):  at android.app.ActivityThread.main(ActivityThread.java:4998)
   E/AndroidRuntime(4070):  at java.lang.reflect.Method.invokeNative(Native Method)
   E/AndroidRuntime(4070):  at java.lang.reflect.Method.invoke(Method.java:515)
   E/AndroidRuntime(4070):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)
   E/AndroidRuntime(4070):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593)
   E/AndroidRuntime(4070):  at dalvik.system.NativeStart.main(Native Method)
   E/AndroidRuntime(4070): Caused by: android.database.sqlite.SQLiteException: no such column: Pasta (code 1): , while compiling: SELECT * FROM item_table WHERE Category=Pasta
   E/AndroidRuntime(4070):  at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
   E/AndroidRuntime(4070):  at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
   E/AndroidRuntime(4070):  at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
   E/AndroidRuntime(4070):  at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
   E/AndroidRuntime(4070):  at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
   E/AndroidRuntime(4070):  at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37)
   E/AndroidRuntime(4070):  at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44)
   E/AndroidRuntime(4070):  at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1314)
   E/AndroidRuntime(4070):  at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1253)
   E/AndroidRuntime(4070):  at com.helper.DbHelper.retrieve_item_details(DbHelper.java:158)
   E/AndroidRuntime(4070):  at com.alrimal.MenuItemsActivity.onCreate(MenuItemsActivity.java:57)
   E/AndroidRuntime(4070):  at android.app.Activity.performCreate(Activity.java:5243)
    E/AndroidRuntime(4070):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
    E/AndroidRuntime(4070):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2140)
   E/AndroidRuntime(4070):  ... 11 more

我认为该表中缺少列名“Category”,请交叉检查。

在虚拟设备上运行应用程序,然后转到DDMS透视图,从那里查看data/data/yourapplication/database/yourdatabasename,然后在您的计算机上拖动数据库并用mozilla打开它。(注意:要在mozilla中打开sqlite数据库,必须添加sqlite管理器加载项。)
现在,您可以检查数据库。它可以帮助您轻松解决问题。

意大利面食
应该是
“单引号”
中的字符串文字,而不是列名称

但是,最好在查询中使用参数。在SQL中将文本替换为
,并将绑定参数中的值提供给查询函数:

String selectQuery = "SELECT * FROM item_table WHERE Category=?";
Cursor cursor = database.rawQuery(selectQuery, new String[] { category });

显示
item_表的create语句
table我在sqlite管理器中查看了它..有一个名为categoryok的列,那么Uy查询应该是int,形式为“SELECT*FROM item_表,其中Category=”+“Category+”;
String selectQuery = "SELECT * FROM item_table WHERE Category=?";
Cursor cursor = database.rawQuery(selectQuery, new String[] { category });