Iphone 插入原始数据时,在下一个索引上插入空数据

Iphone 插入原始数据时,在下一个索引上插入空数据,iphone,Iphone,这是将数据插入数据库的代码。当我使用select查询检查数据库时,它显示的数据如下所示 谁能告诉我哪里出了错 谢谢。尝试使用pageid method变量而不是dict,可能dict是错误的。另一方面,您可以为id插入 -(IBAction)btnAddToFavorite:(id)sender { [self insertDataToFavourites:[[tempDict objectForKey:@"pageid"]intValue]:[tempDict objectForKe

这是将数据插入数据库的代码。当我使用select查询检查数据库时,它显示的数据如下所示

谁能告诉我哪里出了错


谢谢。

尝试使用pageid method变量而不是dict,可能dict是错误的。另一方面,您可以为id插入

-(IBAction)btnAddToFavorite:(id)sender
{
    [self insertDataToFavourites:[[tempDict objectForKey:@"pageid"]intValue]:[tempDict objectForKey:@"desc"]];
}

-(void)insertDataToFavourites:(int)pageid :(NSString *)description
{
    sqlite3_stmt *insertStatement = nil;
    NSString *sql;
    int returnvalue;
        sql = [NSString stringWithFormat:@"insert into AddFavorite (Id,Description) VALUES (?,?)"];

    returnvalue = sqlite3_prepare_v2(database, [sql UTF8String], -1, &insertStatement, NULL);

    NSLog(@"\nFavorite ID is:--> %d &\nDescription is:--> %@",[[tempDict valueForKey:@"pageid"] intValue] ,[tempDict valueForKey:@"desc"]);

    if (returnvalue == 1){
        NSAssert1 (0,@"Error: failed to prepare statement with message '%s'.", sqlite3_errmsg(database));
    }
    sqlite3_bind_text(insertStatement, 1,[[tempDict objectForKey:@"pageid"] UTF8String], -1, SQLITE_TRANSIENT);
    sqlite3_bind_text(insertStatement, 2,[[tempDict objectForKey:@"desc"] UTF8String], -1, SQLITE_TRANSIENT);

    if (SQLITE_DONE != sqlite3_step(insertStatement)){
        NSAssert1(0, @"Error while inserting data. '%s'", sqlite3_errmsg(database));
    }
    else{
        sqlite3_reset(insertStatement);
    }

    sqlite3_finalize(insertStatement);
}
我认为这可能是不对的

对于测试用例,您可以将SQLItemManager作为sqlstatement插入

插入AddFavorite(Id,Description)值(1,'TestDescription')

检查语句是否正确

如果数据库中的id是int,我将使用此代码插入您的值

sqlite3_bind_text(insertStatement, 1,[[tempDict objectForKey:@"pageid"] UTF8String], -1, SQLITE_TRANSIENT);

尝试使用pageid方法变量而不是dict,可能dict是错误的。另一方面,您可以为id插入

-(IBAction)btnAddToFavorite:(id)sender
{
    [self insertDataToFavourites:[[tempDict objectForKey:@"pageid"]intValue]:[tempDict objectForKey:@"desc"]];
}

-(void)insertDataToFavourites:(int)pageid :(NSString *)description
{
    sqlite3_stmt *insertStatement = nil;
    NSString *sql;
    int returnvalue;
        sql = [NSString stringWithFormat:@"insert into AddFavorite (Id,Description) VALUES (?,?)"];

    returnvalue = sqlite3_prepare_v2(database, [sql UTF8String], -1, &insertStatement, NULL);

    NSLog(@"\nFavorite ID is:--> %d &\nDescription is:--> %@",[[tempDict valueForKey:@"pageid"] intValue] ,[tempDict valueForKey:@"desc"]);

    if (returnvalue == 1){
        NSAssert1 (0,@"Error: failed to prepare statement with message '%s'.", sqlite3_errmsg(database));
    }
    sqlite3_bind_text(insertStatement, 1,[[tempDict objectForKey:@"pageid"] UTF8String], -1, SQLITE_TRANSIENT);
    sqlite3_bind_text(insertStatement, 2,[[tempDict objectForKey:@"desc"] UTF8String], -1, SQLITE_TRANSIENT);

    if (SQLITE_DONE != sqlite3_step(insertStatement)){
        NSAssert1(0, @"Error while inserting data. '%s'", sqlite3_errmsg(database));
    }
    else{
        sqlite3_reset(insertStatement);
    }

    sqlite3_finalize(insertStatement);
}
我认为这可能是不对的

对于测试用例,您可以将SQLItemManager作为sqlstatement插入

插入AddFavorite(Id,Description)值(1,'TestDescription')

检查语句是否正确

如果数据库中的id是int,我将使用此代码插入您的值

sqlite3_bind_text(insertStatement, 1,[[tempDict objectForKey:@"pageid"] UTF8String], -1, SQLITE_TRANSIENT);

您可以在插入前检查,如果任何值为null,您可以传递@“”,它可能会工作。在插入数据之前,表是完全空白的…我们也可以在这里看到…如果最初有任何null值,则第一行应该有null值。在每次新插入数据时,为下一个索引提供null值…您可以在插入之前检查,如果任何值为null,您可以传递@“”,它可能会工作。在插入数据之前,表是完全空白的…我们也可以在这里看到…如果最初有任何null值,那么第一行应该有null值。在每次新插入数据时,都会给下一个索引提供null值。。。