将NSString与SQLite数据库字段进行比较

时间:2011-11-17 12:08:15

标签: objective-c cocoa-touch sqlite nsstring

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

从数据库中检索:

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值,它显示"是"。

我可以知道比较期间出了什么问题或哪里出错了吗?

2 个答案:

答案 0 :(得分:2)

您无法比较此类字符串,您必须使用isEqualToString:

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

答案 1 :(得分:0)

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

Reference