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