私は次のsql_buildup_methodを取得しました...コードは少し汚れていますが、そうではありません
char *build_up_sql(char *inputName,char *inputMessage)
{
char firstPartStatement[1064] ="INSERT INTO User (name, msg) VALUES (";
char *endPartStatement =");";
char *lightener = "'";
char *statement;
strcat(firstPartStatement,lightener);
strcat(firstPartStatement,inputName);
strcat(firstPartStatement,lightener);
strcat(firstPartStatement,",");
strcat(firstPartStatement,lightener);
strcat(firstPartStatement,inputMessage);
strcat(firstPartStatement,lightener);
strcat(firstPartStatement,endPartStatement);
statement = firstPartStatement;
return statement;
}
void create_input(sqlite3 *handler,char *inputName,char *inputMessage)
{
char *sql;
sql = build_up_sql(inputName,inputMessage);
// sql ="INSERT INTO User (name, msg) VALUES ('Susanne','hi all');";
printf("%s\n",sql);
sqlite3_exec(handler,sql, NULL, NULL, NULL);
}
printfは次の出力を提供します。INSERTINTOUser(name、msg)VALUES('Susanne'、'hi all'); これはまったく問題ありません...しかし、sqlite3_execはそれを無視し、新しいデータベース入力を生成しません....行を残すとsql = "INSERT INTO User(name、msg)VALUES('Susanne'、'hi all' ); "; コードでは、sqlite3_execは正常に機能します....すべてを1つの関数に入れることでも問題は解決しましたが、これはオプションではありません.....