2011-11-17 69 views
0

我有这些代码从SQLite数据库检索值并将其与头文件中声明的NSString进行比较。比较NSString到SQLite数据库字段

从数据库中检索:

NSString *sql = [[NSString alloc] initWithFormat:@"SELECT TESTONE, TESTTWO, TESTTHREE, TESTFOUR FROM STUDENTS WHERE NAME='%@'",Name]; 
sqlite3_stmt *statement; 
if(sqlite3_prepare_v2(db, [sql UTF8String], -1, &statement, nil)== SQLITE_OK) 
{ 
    while(sqlite3_step(statement) == SQLITE_ROW){ 
     char *one = (char *) sqlite3_column_text(statement,0); 
     tOne = [[NSString alloc] initWithUTF8String:one]; 
     char *two = (char *) sqlite3_column_text(statement,1); 
     tTwo = [[NSString alloc] initWithUTF8String:two]; 
     char *three = (char *) sqlite3_column_text(statement,2); 
     tThree = [[NSString alloc] initWithUTF8String:three]; 
     char *four = (char *) sqlite3_column_text(statement,3); 
     tFour = [[NSString alloc] initWithUTF8String:four]; 
    } 
} 

比较字符串:

if(tOne == @"Yes") 
{ 
    //blablabla 
} 
else if(tOne == @"No") 
{ 
    //blablabla 
} 

它似乎并没有进入 'IF' 可言。
我已经仔细检查了数据库中的字段及其TEXT数据类型。
我做了一个UILabel来显示tOne值,它显示“是”。

我可以知道在比较过程中出了什么问题吗?

回答

0

您目前正在比较NSString对象的地址,而不是其内容。使用compare:isEqualToString:系列方法比较字符串的内容

Reference

2

你不能比较字符串这样,你必须使用isEqualToString:

if([tOne isEqualToString:@"Yes"]) 
{ 
    //blablabla 
} 
else if([tOne isEqualToString:@"No"]) 
{ 
    //blablabla 
}