gpt4 book ai didi

iphone - SQLite3 COUNT 不正确

转载 作者:行者123 更新时间:2023-11-29 05:04:18 25 4
gpt4 key购买 nike

假设我有一个名为“事件”的表和一个名为“设备”的表。

每个设备都有一个 CI 代码。

我想创建一个 TableView ,其中各部分包含设备名称 (CI),每行代表一个事件。为了获得每个部分下的正确行数,我使用以下代码:

NSMutableArray *lijstDevices = [[NSMutableArray alloc] init];
const char *dbpath = [appDelegate.databasePath UTF8String];
sqlite3_stmt *statement;

if (sqlite3_open(dbpath, &contactDB) == SQLITE_OK)
{
NSString *querySQL = [NSString stringWithFormat:@"SELECT DISTINCT CI FROM Devices"];
const char *query_stmt = [querySQL UTF8String];

if (sqlite3_prepare_v2(contactDB, query_stmt, -1, &statement, NULL) == SQLITE_OK)
{
while (sqlite3_step(statement) == SQLITE_ROW)
{
// NSLog(@"SQLite ROW for filling in cell");
NSString *addDev = [[NSString alloc] initWithUTF8String:(const char *)sqlite3_column_text(statement, 0)];
[lijstDevices addObject:addDev];
}
sqlite3_finalize(statement);
}

NSString *ciNaam = [lijstDevices objectAtIndex:section];

NSString *querySQL2 = [NSString stringWithFormat:@"SELECT COUNT(ID) FROM Incidents WHERE CI='%@'", ciNaam];
const char *query_stmt2 = [querySQL2 UTF8String];

if (sqlite3_prepare_v2(contactDB, query_stmt2, -1, &statement, NULL) == SQLITE_OK)
{
//NSLog(@"SQLite ok in rowforindexpath");
if(sqlite3_step(statement) == SQLITE_ROW) {
// NSLog(@"SQLite ROW for filling in cell");
teller = sqlite3_column_int(statement, 0);
}
else
{
NSLog(@"Not.. good...");
}
sqlite3_finalize(statement);
}
sqlite3_close(contactDB);

}

问题来了:各部分填写正确。有些部分需要 1 行,其他部分需要 2 行。每当我运行该程序时,每个需要 1 行的部分最终都会有 0 行,而每个需要 2 行的部分最终只会有 1 行。

除此之外,我之前遇到了一个错误,没有清理表格。因此,如果我运行两次,数据库的行数就会增加一倍。在这种情况下,每个需要 1 的行都有 2 行。每个需要 2 个,有 4 行。显然情况不再是这样,但它可能有助于理解出了什么问题。

大家有什么想法吗???

最佳答案

你看一下这个例子并检查一下

-(void)ChekInDataBase{
sqlite3 *database;

if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK)
{
NSString *sqlStatement = [NSString stringWithFormat:@"SELECT count(id) as countRow FROM password"];

sqlite3_stmt *compiledStatement;

if(sqlite3_prepare_v2(database, [sqlStatement cStringUsingEncoding:NSUTF8StringEncoding], -1, &compiledStatement, NULL) == SQLITE_OK)
{
NSLog(@"%@",sqlStatement);

if (sqlite3_step(compiledStatement) == SQLITE_ROW)
{
countRow = [[NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement,0 )]intValue] ;
}
}
sqlite3_finalize(compiledStatement);

if (countRow > 0)
{
[yesBtnPressed setImage:[UIImage imageNamed:@"yes_tab_over.png"]forState:UIControlStateNormal];
[noBtnPressed setImage:[UIImage imageNamed:@"no_tab.png"]forState:UIControlStateNormal];

[noBtnPressed setUserInteractionEnabled:TRUE];
[yesBtnPressed setUserInteractionEnabled:FALSE];
}
else
{
[yesBtnPressed setImage:[UIImage imageNamed:@"yes_tab.png"]forState:UIControlStateNormal];
[noBtnPressed setImage:[UIImage imageNamed:@"no_tab_over.png"]forState:UIControlStateNormal];

[noBtnPressed setUserInteractionEnabled:FALSE];
[yesBtnPressed setUserInteractionEnabled:TRUE];
}
sqlite3_close(database);
}
}

关于iphone - SQLite3 COUNT 不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5976500/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com