SQlite INSERT INTO语句出错

时间:2016-08-22 10:31:24

标签: java android sqlite

我是Android的新手并且正在使用Android应用。不幸的是,在尝试将数据从意图插入void change_uid() { cout << "before getuid : " << getuid() << ", getgid : " << getgid() << endl; cout << "setgroups(0, NULL) : " << setgroups(0, NULL) << ", setgid(0) : " << setgid(0) << ", setuid(0) : " << setuid(0) << endl; cout << "after getuid : " << getuid() << ", getgid : " << getgid() << endl; } void test_write_data() { FILE *fd = fopen("/data/smtm.txt", "a+"); if (NULL != fd) { int count = fprintf(fd, "%s", "write something"); cout <<"fprintf count == " << count << endl; int result = fclose(fd); cout <<"fclose result == " << result << endl; fd = NULL; } else { printf("fd == null\n"); } } int main(const int argc, const char * const argv[]) { change_uid(); cout << "***step test_write_data*" << endl; test_write_data(); } 数据库时出现错误。我想将扫描结果插入数据库,但我收到错误消息。我想将两个来自Intents的扫描结果 - SCAN RESULT和SCAN RESULT FORMAT - 插入到数据库中。

这是 Logcat:

SQlite

这是带有 SQLite语句的代码:

08-22 12:27:11.141 27724-27724/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: de.die_web_agenten.www.runinstant, PID: 27724
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=0, result=-1, data=Intent { act=com.google.zxing.client.android.SCAN flg=0x80000 (has extras) }} to activity {de.die_web_agenten.www.runinstant/de.die_web_agenten.www.runinstant.AndroidBarcodeQrExample}: android.database.sqlite.SQLiteException: near "SCANDATA": syntax error (code 1): , while compiling: INSERT INTO SCANDATA SCANDATA  SCAN_RESULT_FORMAT
#################################################################
Error Code : 1 (SQLITE_ERROR)
Caused By : SQL(query) error or missing database.
(near "SCANDATA": syntax error (code 1): , while compiling: INSERT INTO SCANDATA SCANDATA  SCAN_RESULT_FORMAT)
#################################################################
at android.app.ActivityThread.deliverResults(ActivityThread.java:4005)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:4048)
at android.app.ActivityThread.access$1400(ActivityThread.java:177)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1479)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5910)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1405)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1200)
Caused by: android.database.sqlite.SQLiteException: near "SCANDATA": syntax error (code 1): , while compiling: INSERT INTO SCANDATA SCANDATA  SCAN_RESULT_FORMAT
#################################################################
Error Code : 1 (SQLITE_ERROR)
Caused By : SQL(query) error or missing database.
(near "SCANDATA": syntax error (code 1): , while compiling: INSERT INTO SCANDATA SCANDATA  SCAN_RESULT_FORMAT)
#################################################################
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:1093)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:670)
at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:59)
at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31)
at android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1812)
at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1743)
at de.die_web_agenten.www.runinstant.AndroidBarcodeQrExample.onActivityResult(AndroidBarcodeQrExample.java:119)
at android.app.Activity.dispatchActivityResult(Activity.java:6441)
at android.app.ActivityThread.deliverResults(ActivityThread.java:4001)
... 10 more

代码中的错误在哪里?任何提示和帮助将非常感谢,谢谢!

2 个答案:

答案 0 :(得分:3)

你写错了语法。您必须使用以下内容。

INSERT INTO TABLE_NAME (column1, column2, column3,...columnN)] VALUES (value1, value2, value3,...valueN);

答案 1 :(得分:2)

我认为您可能要做的是分别将contentsformat插入TaskContract.Columns.SCAN_RESULTTaskContract.Columns.SCAN_RESULT_FORMAT。这是你应该如何创建语句 -

String.format("INSERT INTO SCANDATA (%s,%s) VALUES ('%s', '%s')",
       TaskContract.Columns.SCAN_RESULT,
       TaskContract.Columns.SCAN_RESULT_FORMAT,
       contents,
       format
);