【问题标题】:Android Query SQLite strange errorAndroid Query SQLite 奇怪的错误
【发布时间】:2014-02-15 02:39:36
【问题描述】:

这个查询给了我错误"no such column: ANTIPASTI" 我不明白为什么WHERE 子句会给出这个错误:

String sql = "SELECT _id, prodotto, reparto FROM Prodotti WHERE reparto=ANTIPASTI";

日志猫:

02-14 13:28:39.376: E/AndroidRuntime(1987): 致命异常: main 02-14 13:28:39.376: E/AndroidRuntime(1987): java.lang.RuntimeException:无法启动活动 组件信息{com.example.ristor/com.example.ristor.Interno_tavolo}: android.database.sqlite.SQLiteException:没有这样的列:ANTIPASTI (代码 1): , 编译时: SELECT _id, prodotto, reparto FROM Prodotti WHERE reparto=ANTIPASTI 02-14 13:28:39.376: E/AndroidRuntime(1987):在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211) 02-14 13:28:39.376: E/AndroidRuntime(1987): 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261) 02-14 13:28:39.376: E/AndroidRuntime(1987): 在 android.app.ActivityThread.access$600(ActivityThread.java:141) 02-14 13:28:39.376:E/AndroidRuntime(1987):在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256) 02-14 13:28:39.376: E/AndroidRuntime(1987): 在 android.os.Handler.dispatchMessage(Handler.java:99) 02-14 13:28:39.376:E/AndroidRuntime(1987):在 android.os.Looper.loop(Looper.java:137) 02-14 13:28:39.376: E/AndroidRuntime(1987):在 android.app.ActivityThread.main(ActivityThread.java:5103) 02-14 13:28:39.376:E/AndroidRuntime(1987):在 java.lang.reflect.Method.invokeNative(Native Method) 02-14 13:28:39.376:E/AndroidRuntime(1987):在 java.lang.reflect.Method.invoke(Method.java:525) 02-14 13:28:39.376: E/AndroidRuntime(1987):在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 02-14 13:28:39.376: E/AndroidRuntime(1987): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 02-14 13:28:39.376:E/AndroidRuntime(1987):在 dalvik.system.NativeStart.main(Native Method) 02-14 13:28:39.376: E/AndroidRuntime(1987):原因: android.database.sqlite.SQLiteException:没有这样的列:ANTIPASTI (代码 1): , 编译时: SELECT _id, prodotto, reparto FROM Prodotti WHERE reparto=ANTIPASTI 02-14 13:28:39.376: E/AndroidRuntime(1987):在 android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native 方法) 02-14 13:28:39.376: E/AndroidRuntime(1987): at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889) 02-14 13:28:39.376: E/AndroidRuntime(1987): 在 android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500) 02-14 13:28:39.376: E/AndroidRuntime(1987): 在 android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588) 02-14 13:28:39.376: E/AndroidRuntime(1987): 在 android.database.sqlite.SQLiteProgram.(SQLiteProgram.java:58) 02-14 13:28:39.376: E/AndroidRuntime(1987): 在 android.database.sqlite.SQLiteQuery.(SQLiteQuery.java:37) 02-14 13:28:39.376:E/AndroidRuntime(1987):在 android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44) 02-14 13:28:39.376: E/AndroidRuntime(1987): 在 android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1314) 02-14 13:28:39.376: E/AndroidRuntime(1987): 在 android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1253) 02-14 13:28:39.376: E/AndroidRuntime(1987): 在 com.example.ristor.Interno_tavolo.listaProdotti(Interno_tavolo.java:55) 02-14 13:28:39.376: E/AndroidRuntime(1987): 在 com.example.ristor.Interno_tavolo.onCreate(Interno_tavolo.java:46) 02-14 13:28:39.376: E/AndroidRuntime(1987): 在 android.app.Activity.performCreate(Activity.java:5133) 02-14 13:28:39.376:E/AndroidRuntime(1987):在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 02-14 13:28:39.376: E/AndroidRuntime(1987): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175) 02-14 13:28:39.376: E/AndroidRuntime(1987): ... 11 更多

【问题讨论】:

  • 使用'ANTIPASTI'。由于该列是 String,因此您应该与 String 进行比较。
  • 您确定“Prodotti”表中有“ANTIPASTI”列吗?

标签: android sqlite select


【解决方案1】:

由于ANTIPASTI 是文字字符串,您需要将其括在' 单引号中,如下所示。

String sql = "SELECT _id, prodotto, reparto FROM Prodotti WHERE reparto = 'ANTIPASTI' ";

【讨论】:

    猜你喜欢
    • 2014-04-12
    • 1970-01-01
    • 2013-04-08
    • 2018-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-29
    相关资源
    最近更新 更多