2012-07-25 78 views

回答

4

只要您的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); 
} 
+0

什麼是命令? – 2012-07-25 05:43:04

+0

對不起,這是&sql。固定 – mask8 2012-07-25 05:43:57

+0

非常感謝@ mask8 – 2012-07-25 05:44:17

2

因爲您不關心SQL語句的未編譯部分。從the docs

如果pzTail不是NULL,則* pzTail由指向過去ZSQL第一個SQL語句結束的第一個字節。這些例程僅編譯zSql中的第一條語句,因此* pzTail指向仍未編譯的內容。

如果你有一個包含許多SQL語句的字符串,這會很有用,但是如果你不這麼做,那只是一句蠢話。

+0

非常感謝Ignacio Vazquez-Abrams – 2012-07-25 05:44:54

0

,如果你的意思是?「爲什麼代碼使用NULL,而不是零」這是因爲nil意味着用於不存在的對象指針,而NULL意味着用作指針的地址,它基本上是空的 - 呃,不會指向任何東西。這是一個很好的區別,但這就是爲什麼。

作爲一個例子,你將有一個零指針,仍然可以傳遞Objective-C消息給它。但是你不能對你有一個NULL地址的實體做同樣的事情。