请谁能告诉我为什么我们NULL
在下面的第五个参数中写?
if(sqlite3_prepare_v2(database, sql, -1, &selectstmt, NULL) == SQLITE_OK)
提前致谢。
只要你sql
只有一个语句,你就不需要使用第五个参数。当sql
有多个语句时,您可以收到指向下一个语句开头的指针。例如:
const char* sql =
"DROP TABLE price_list;"
"CREATE TABLE price_list ( item TEXT, price INTEGER)";
while ( *sql ) {
sqlite3_stmt* statement;
sqlite3_prepare_v2(db, sql, -1, &statement, &sql);
sqlite_step(statement);
sqlite_finalize(statement);
}
因为您不关心 SQL 语句的未编译部分。从文档:
如果 pzTail 不为 NULL,则 *pzTail 指向 zSql 中第一个 SQL 语句末尾之后的第一个字节。这些例程只编译 zSql 中的第一条语句,因此 *pzTail 指向未编译的内容。
如果您有一个包含许多 SQL 语句的字符串,那么使用它会很有用,但如果您没有,那么它就很笨拙。