2010-09-02 39 views
0

我檢討代碼,使下面的調用:Objective-C的字符串

id<PLResultSet> results = [sqliteDatabase executeQuery:@"select * where id=?",Id]; 

sqliteDatabasePlausibleDatabase一個實例(從googlecode上,我收集)。代碼有用,但我不明白。具體來說,這部分是如何工作的?

@"select * where id=?",Id 

正與?進行的查詢被Id取代?或者exeuteQuery函數以某種方式組合字符串?這個語法如何有意義。

(是的,我的新的OBJ-C)

謝謝,

KF

+0

這也是在其他編程語言中完成的,而不是特定於Objective-C(當然函數名稱等是特定的)。 – 2010-09-02 21:42:35

回答

0

這是特定於方法executeQuery,其中?被用作佔位符,並且適當的位置參數用作佔位符的填充符(根據需要添加引號等)。

+0

我永遠不會明白這一點。謝謝! – 2010-09-02 21:41:47

+0

參數化查詢的一個好處是根本不需要引用任何引用:參數值可以作爲不同的數據片段傳遞到數據庫。 – Douglas 2010-09-02 23:21:43

1

該位:

@"select * where id=?" 

NSString(而不是一個c-style string),其在通入sqliteDatabase對象上的executeQuery: :方法。該方法的第二個(未命名)參數是Id,可能是局部變量。

從該方法的名稱猜測,sqlite包裝可能會創建一個parameterized query。問號是sqlite用來標記插入參數的位置的語法。