Android Query SQLite奇怪的错误

时间:2014-02-14 18:35:41

标签: android sqlite select

此查询错误"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

1 个答案:

答案 0 :(得分:1)

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

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