SQLite C 接口
判断 SQL 语句是否完整
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 字符串。