int sqlite3_complete(const char *sql); int sqlite3_complete16(const void *sql);
这些例程在命令行输入期间非常有用,用于确定当前输入的文本是否构成完整的 SQL 语句,或者在将文本发送到 SQLite 进行解析之前是否需要更多输入。如果输入字符串看起来是一个完整的 SQL 语句,则这些例程返回 1。如果语句以分号标记结尾且不是格式良好的 CREATE TRIGGER 语句的前缀,则判断该语句完整。嵌入在字符串文字、带引号的标识符名称或注释中的分号不是独立的标记(它们是嵌入它们的标记的一部分),因此不计为语句终止符。在最后一个分号之后的空白和注释将被忽略。
如果语句不完整,则这些例程返回 0。如果内存分配失败,则返回 SQLITE_NOMEM。
这些例程不解析 SQL 语句,因此不会检测到语法错误的 SQL。
如果在调用 sqlite3_complete16() 之前没有使用 sqlite3_initialize() 初始化 SQLite,则 sqlite3_complete16() 会自动调用 sqlite3_initialize()。如果初始化失败,则无论输入 SQL 是否完整,sqlite3_complete16() 的返回值都将非零。
对 sqlite3_complete() 的输入必须是零终止的 UTF-8 字符串。
对 sqlite3_complete16() 的输入必须是本机字节序的零终止 UTF-16 字符串。