gpt4 book ai didi

ios - 删除数据库中的数据时出现的问题

转载 作者:行者123 更新时间:2023-11-29 12:34:31 25 4
gpt4 key购买 nike

我正在使用 sqlite 数据库,我在 TableView 中显示数据,当我在 TableView 中删除行时,数据也应该在我的数据库表中删除。我在我的 sqlitedb 表中编写了删除查询,但没有删除。

这是我的代码

  - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete)
{

if (btnCliked==NO)
{

[videoTitleArrya removeObjectAtIndex:indexPath.row];
[videoImagesLinksDataArray removeObjectAtIndex:indexPath.row];
NSLog(@"videoTitleArrya%@",videoTitleArrya);
NSLog(@"videoImagesLinksDataArray%@",videoImagesLinksDataArray);
NSUInteger temp=[[videoTitleArrya objectAtIndex:indexPath.row] intValue];
[self deleteDataBaseRow:temp];

}


[tableView reloadData];
}
else if (editingStyle == UITableViewCellEditingStyleInsert)
{

}
}

-(void)deleteDataBaseRow:(NSUInteger)RowNumber

{
if (sqlite3_open([dbPathString UTF8String], &DB)==SQLITE_OK)
{
NSLog(@"dataBaseOpen");
NSString *Query = [NSString stringWithFormat:@"DELETE FROM mytablename where
id ='%@'",RowNumber];

const char * deletequery = [Query UTF8String];
if (sqlite3_prepare_v2(DB, deletequery, -1, &statement, NULL) != SQLITE_OK)
{

NSLog(@"deletedSuccessfully");

}
sqlite3_close(DB);

}}

最佳答案

根据您的代码,我想处理一些问题,如果所有其他事情都正确,它将从数据库中删除记录。

看这一行:

NSString *Query = [NSString stringWithFormat:@"DELETE  FROM mytablename where 
id ='%@'",RowNumber];

在这里,您对 int 变量 RowNumber 使用了 %@ 运算符。用这个替换上面的行

NSString *strRowNumber = [NSString stringWithFormat:@"%d",RowNumber];
NSString *Query = [NSString stringWithFormat:@"DELETE FROM mytablename where id ='%@'",strRowNumber];

第二个要注意的是下面一行:

if (sqlite3_prepare_v2(DB, deletequery, -1, &statement, NULL) != SQLITE_OK) 
{
NSLog(@"deletedSuccessfully");
}

这里你打印了 NSLog for != SSQLITE_OK。所以上面的逻辑表明,当从表中删除行时出现错误时,您会打印成功消息。这是一个矛盾,如果你在上面的条件下做了任何事情,它不会生效,因为你的比较是错误的。

用下面的条件替换上面的条件:

if (sqlite3_prepare_v2(database, query_stmt, -1, &statement, NULL) == SQLITE_OK) {
if (sqlite3_step(statement) == SQLITE_DONE) {
sqlite3_reset(statement);
}
else {
const char *error = sqlite3_errmsg(database);
strError = [NSString stringWithUTF8String:error];
NSLog(@"Error : %@",strError);
}
} else {
NSLog(@"Error while deleting record");
}

关于ios - 删除数据库中的数据时出现的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26710539/

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