SQLite SQL查询中的语法错误

时间:2012-01-11 06:43:40

标签: android sqlite

我正在使用带有SQLite 3的Android 2.2。我正在使用下面的查询,但它错误地显示了我粘贴的错误日志。

我对自己出错的地方毫无头绪。

我的代码:

 private static final String table_post_natal_care= new String("create table post_natal_care ("+
    "number_of_meal text ,"+
    "excessive_bleeding text ,"+
    "number_of_pads_changed text ,"+
    "baby_warm text ,"+
    "number_of_times_baby_fed text ,"+
    "baby_crying text ,"+
    "number_of_times_baby_urinating text ,"+
    "mother_temperature text ,"+
    "mother_discharge text ,"+
    "mother_speaking_pattern text ,"+
    "mother_fits text ,"+
    "mother_perceives_milk text ,"+
    "mother_nipples text ,"+
    "mother_skin_color text ,"+
    "vagina_tearing text ,"+
    "baby_swollen_eyes text ,"+
    "baby_weight text ,"+
    "baby_temperature text ,"+
    "baby_pustules text ,"+
    "baby_skin text ,"+
    "baby_eyes text ,"+
    "baby_feeding text ,"+
    "baby_limbs text ,"+
    "baby_abdomen text ,"+
    "baby_cry text ,"+
    "baby_chest text,"+
    "baby_umbilicius text,"+ 
    "baby_vommit text"+
    ")"); 

LogTrace:

I/iDoc    (  277): returning createContentValues_pnc_visit=Yes
I/Database(  277): sqlite returned: error code = 1, msg = near ")": syntax error
D/dalvikvm(  277): GC_FOR_MALLOC freed 2186 objects / 720424 bytes in 56ms
E/Database(  277): Error inserting =Yes
E/Database(  277): android.database.sqlite.SQLiteException: near ")": syntax error: , while compiling: INSERT INTO post_natal_care() VA
LUES(?);
E/Database(  277):      at android.database.sqlite.SQLiteCompiledSql.native_compile(Native Method)
E/Database(  277):      at android.database.sqlite.SQLiteCompiledSql.compile(SQLiteCompiledSql.java:91)
E/Database(  277):      at android.database.sqlite.SQLiteCompiledSql.<init>(SQLiteCompiledSql.java:64)
E/Database(  277):      at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:80)
E/Database(  277):      at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:36)
E/Database(  277):      at android.database.sqlite.SQLiteDatabase.compileStatement(SQLiteDatabase.java:1145)
E/Database(  277):      at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1536)
E/Database(  277):      at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1410)
E/Database(  277):      at org.atl.db.DBAdapter.insertPNCVisit(DBAdapter.java:824)
E/Database(  277):      at com.accenturelabs.idoc.PostNatalCheck.insertPNCData(PostNatalCheck.java:363)
E/Database(  277):      at com.accenturelabs.idoc.PostNatalCheck.access$6(PostNatalCheck.java:360)
E/Database(  277):      at com.accenturelabs.idoc.PostNatalCheck$4.onClick(PostNatalCheck.java:149)
E/Database(  277):      at android.view.View.performClick(View.java:2408)
E/Database(  277):      at android.view.View$PerformClick.run(View.java:8816)
E/Database(  277):      at android.os.Handler.handleCallback(Handler.java:587)
E/Database(  277):      at android.os.Handler.dispatchMessage(Handler.java:92)
E/Database(  277):      at android.os.Looper.loop(Looper.java:123)
E/Database(  277):      at android.app.ActivityThread.main(ActivityThread.java:4627)
E/Database(  277):      at java.lang.reflect.Method.invokeNative(Native Method)
E/Database(  277):      at java.lang.reflect.Method.invoke(Method.java:521)
E/Database(  277):      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
E/Database(  277):      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
E/Database(  277):      at dalvik.system.NativeStart.main(Native Method)

2 个答案:

答案 0 :(得分:2)

我认为你的字符串查询不好。目前还不清楚,我不知道你桌子的主键是什么,我觉得你错过了“;”在查询结束时

一些代码示例如:

private static final String TODOLIST_TABLE_CREATE = "create table TODOLIST" 
            +" (_id integer primary key autoincrement, "
            +"summary text not null, "
            +"description text, "
            +"categoryid integer REFERENCES CATEGORY(_id), "
            +"priority integer, "
            +"abdeadline text, "
            +"goaldeadline text, "
            +"remindab integer, "
            +"remindgoal integer);";

使用换行清除查询字符串。

答案 1 :(得分:1)

您的错误记录。

  

E / Database(277):android.database.sqlite.SQLiteException:near“)”:   语法错误:,编译时:INSERT INTO post_natal_care()VA

它清楚地表明您在将数据插入表中而不是创建时遇到问题。因此,请检查您的插入查询。