Sqlite3在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%sn", RED, RST);
}
sqlite3_close(db);

我总是得到输出Error during insertion in the database,但不明白为什么,也许是与sqlite3_prepare_v2相关的东西,但不知道是什么,我试图用随机数据"手动"执行查询,它有效。

zSql语句的长度为69个字符。最好使用-1表示长度,因为在默认情况下,它将是一个以空结束的字符串,并且大小将自动计算:

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

不要忘记第3 '?在第三个参数的语句中。编辑:把它写成?在语句

将语句的第2项和?3.

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

最新更新