0

我正在创建一个应用程序并使用 sqlite 3 来存储数据。这是我正在执行以获取数据的代码

sqlite3_stmt *statement; 
NSString *querySQL = [NSString stringWithFormat: @"SELECT ID, HolderName, AccountNumber, BankName, Location FROM Accounts WHERE UserID='%@'",userID];

if(![name isEqualToString:@""]) 
{
    querySQL = [NSString stringWithFormat: @"SELECT ID, HolderName, AccountNumber, BankName, Location FROM Accounts WHERE UserID='%@' and HolderName='%@'",userID, name];
}
const char *query_stmt = [querySQL UTF8String]; 

if (sqlite3_prepare_v2(db, query_stmt, -1, &statement, NULL) == SQLITE_OK)
{
    while(sqlite3_step(statement) == SQLITE_ROW)
    {
        ....
    }
}

这里发生了什么,如果名称为空,则查询(仅在 where 子句中有一个条件)正常运行并获取正确的数据,但它给出错误:如果名称不为空并且查询在 where 子句中包含两个条件,则库例程调用顺序错误. 我不确定它有什么问题,我进行了很多搜索,但发现查询在多个条件下运行完美。请建议我在这里应该做什么。

4

0 回答 0