我是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
代码中的错误在哪里?任何提示和帮助将非常感谢,谢谢!
答案 0 :(得分:3)
你写错了语法。您必须使用以下内容。
INSERT INTO TABLE_NAME (column1, column2, column3,...columnN)] VALUES (value1, value2, value3,...valueN);
答案 1 :(得分:2)
我认为您可能要做的是分别将contents
和format
插入TaskContract.Columns.SCAN_RESULT
和TaskContract.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
);