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);
别忘了第三个'?'在第三个参数的声明中。
编辑:写成 ?在声明中
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);
别忘了第三个'?'在第三个参数的声明中。 编辑:写成 ?在声明中