此查询错误"no such column: ANTIPASTI"
我不明白为什么WHERE
子句会出现此错误:
String sql = "SELECT _id, prodotto, reparto FROM Prodotti WHERE reparto=ANTIPASTI";
LOG CAT:
02-14 13:28:39.376:E / AndroidRuntime(1987):致命异常:主要 02-14 13:28:39.376:E / AndroidRuntime(1987): java.lang.RuntimeException:无法启动活动 ComponentInfo {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):at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211) 02-14 13:28:39.376:E / AndroidRuntime(1987):at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261) 02-14 13:28:39.376:E / AndroidRuntime(1987):at android.app.ActivityThread.access $ 600(ActivityThread.java:141)02-14 13:28:39.376:E / AndroidRuntime(1987):at android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1256) 02-14 13:28:39.376:E / AndroidRuntime(1987):at android.os.Handler.dispatchMessage(Handler.java:99)02-14 13:28:39.376:E / AndroidRuntime(1987):at android.os.Looper.loop(Looper.java:137)02-14 13:28:39.376: E / AndroidRuntime(1987):at android.app.ActivityThread.main(ActivityThread.java:5103)02-14 13:28:39.376:E / AndroidRuntime(1987):at java.lang.reflect.Method.invokeNative(Native Method)02-14 13:28:39.376:E / AndroidRuntime(1987):at java.lang.reflect.Method.invoke(Method.java:525)02-14 13:28:39.376: E / AndroidRuntime(1987):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:737) 02-14 13:28:39.376:E / AndroidRuntime(1987):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)02-14 13:28:39.376:E / AndroidRuntime(1987):at 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):at android.database.sqlite.SQLiteConnection.nativePrepareStatement(母语 方法)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):at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500) 02-14 13:28:39.376:E / AndroidRuntime(1987):at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588) 02-14 13:28:39.376:E / AndroidRuntime(1987):at android.database.sqlite.SQLiteProgram。(SQLiteProgram.java:58) 02-14 13:28:39.376:E / AndroidRuntime(1987):at android.database.sqlite.SQLiteQuery。(SQLiteQuery.java:37)02-14 13:28:39.376:E / AndroidRuntime(1987):at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44) 02-14 13:28:39.376:E / AndroidRuntime(1987):at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1314) 02-14 13:28:39.376:E / AndroidRuntime(1987):at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1253) 02-14 13:28:39.376:E / AndroidRuntime(1987):at com.example.ristor.Interno_tavolo.listaProdotti(Interno_tavolo.java:55) 02-14 13:28:39.376:E / AndroidRuntime(1987):at com.example.ristor.Interno_tavolo.onCreate(Interno_tavolo.java:46) 02-14 13:28:39.376:E / AndroidRuntime(1987):at android.app.Activity.performCreate(Activity.java:5133)02-14 13:28:39.376:E / AndroidRuntime(1987):at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 02-14 13:28:39.376:E / AndroidRuntime(1987):at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175) 02-14 13:28:39.376:E / AndroidRuntime(1987):... 11 more
答案 0 :(得分:1)
由于ANTIPASTI
是一个文字字符串,因此您需要将其括在'
单引号中,如下所示。
String sql = "SELECT _id, prodotto, reparto FROM Prodotti WHERE reparto = 'ANTIPASTI' ";