1
我想測試SQL是否返回結果。如果沒有結果,我想發送一條消息。問題是,當我做這個測試時,當我想要執行我的過程時(當發現行時),第一行被跳過。我想知道如何測試sqlite中的compiledStatement是否返回一個答案或不錯過第一行
NSString *selectSQL = [NSString stringWithFormat:@"SELECT z_pk, zpostcode, zname, zfirstname, zstreetname, zstreetnumber, zcity FROM ZTAB_PARTICULIER where UPPER(ZNAME) like \'\%%%@%%\' and ZPOSTCODE like \'\%%%@%%\'", [self.name.text uppercaseString], self.postcode.text];
const char *query_stmt = [selectSQL UTF8String];
sqlite3_stmt *compiledStatement;
//Compilation de la requete et verification du succes
if (sqlite3_prepare_v2(database, query_stmt, -1, &compiledStatement, NULL) == SQLITE_OK)
{
NSLog(@"Prepare Database OK");
int stat = sqlite3_step(compiledStatement);
if (stat == SQLITE_DONE)
{
NSLog(@"NO ROWS!");
}
while (sqlite3_step(compiledStatement) == SQLITE_ROW)
{
...
在此先感謝
不相關,但不要使用'stringWithFormat'將文本值插入到SQL語句中。例如。嘗試搜索「Joe's Bar」的代碼,並且「sqlite3_prepare_v2」將失敗。相反,在SQL (不包括引號)中使用'?'佔位符,並使用['sqlite3_bind_text'](http://sqlite.org/c3ref/bind_blob.html)。或者使用像[FMDB](https://github.com/ccgus/fmdb)這樣的庫來簡化綁定過程。 – Rob
謝謝你的提示,我打算使用它。 :D – Claudio