我调试了代码,但不知道为什么while语句没有执行。把NSlog后,我才知道它的结果不匹配。 101和SQLITE_ROW等于100.while(sqlite3_step(statement)== SQLITE_ROW)循环不起作用
但查询有结果。如果我从表名获取Select *,则返回结果并执行语句。如果我取结果
sql_stmt = [NSString stringWithFormat:@"SELECT * FROM DeviceType WHERE upper(TypeName) = upper('%@')", deviceType];
虽然声明从不执行,所以请帮助。不知道问题在哪里。
下面是代码:
NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES);
NSString* documentsDirectory = [paths objectAtIndex:0];
NSString* path = [documentsDirectory stringByAppendingPathComponent:@"ClientDB.sqlite"];
NSString* sql_stmt = [self searchStringForLocalData];
BOOL found = NO;
if (sqlite3_open([path UTF8String], &database) == SQLITE_OK)
{
const char* sql1 = [sql_stmt UTF8String];
sqlite3_stmt *statement;
NSNumber *typeCount;
typeCount = 0;
if (sqlite3_prepare_v2(database, sql1, -1, &statement, NULL) == SQLITE_OK)
{
NSLog(@" %d, %d ",sqlite3_step(statement),SQLITE_ROW);
while (sqlite3_step(statement) == SQLITE_ROW) {
// The second parameter indicates the column index into the result set.
int primaryKey1 = sqlite3_column_int(statement, 0);
NSNumber *typeId = [[NSNumber alloc] initWithInt:primaryKey1];
NSString *typeName =[NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 1)];
NSString* sql_stmt1 = [NSString stringWithFormat:@"SELECT COUNT(*) FROM Devices WHERE DeviceTypeId =%d",primaryKey1];
const char *sql1 = [sql_stmt1 UTF8String];
sqlite3_stmt *statement;
NSNumber *typeCount;
typeCount = 0;
那么,sqlite3_step返回的代码是什么,sqlite3_errmsg报告什么? –
那么,sqlite3_step返回什么代码,sqlite3_errmsg报告什么? –