Sqlite3 在数据库中插入数据在 c 中不起作用

Sqlite3 insert data in database does not work in c

   sqlite3_stmt *stmt;
   sqlite3_prepare_v2(db, "INSERT INTO links(NAME, LINK, SIZE, STARRED)  VALUES ('?' , '?', ? , 0);", 41, &stmt, NULL);
   if(stmt != NULL) {
      sqlite3_bind_text(stmt, 1, name, 0, SQLITE_TRANSIENT);
      sqlite3_bind_text(stmt, 2, link, 0, SQLITE_TRANSIENT);
      sqlite3_bind_int(stmt, 3, size);
      sqlite3_step(stmt);
      sqlite3_finalize(stmt);
   }else{
     printf("%sError during insertion in the database%s\n", RED, RST);
   }

  sqlite3_close(db);

我总是得到输出 Error during insertion in the database 但不明白为什么,也许与 sqlite3_prepare_v2 有关但不知道是什么,我尝试执行查询 'manually'使用随机数据并且有效。

您绑定了两次声明的第 2 项和 ?缺少第 3 项。

刚刚通过更改sqlite3_prepare_v2()的第三个参数解决了zSql的最大字节长度,47太小了。

zSql 语句的大小为 69 个字符。对我们来说,长度最好为 -1,因为默认情况下它将是空终止字符串,并且会自动计算大小:

sqlite3_prepare_v2(db, "INSERT INTO links(NAME, LINK, SIZE, STARRED)  VALUES (?, ?, ? , 0);", -1, &stmt, NULL);

别忘了第三个'?'在第三个参数的声明中。 编辑:写成 ?在声明中