如何编辑sqlite DB

时间:2013-05-02 05:37:20

标签: ios objective-c sqlite

我创建了一个应用程序,用于在 SQLite 中存储来自NSDictionary的数据。此NSDictionary从许多NSArray获取自己的信息并存储在 SQLite DB 中。这是我的代码:

- (void)viewDidLoad
{
    [super viewDidLoad];
    int number = [self GetNumberOfRecord]; //this method get number of rows in sqlite
    NSArray *idd = @[@"122", @"234", @"453", @"53464", @"4565", @"1111", @"2222"];
    NSArray *name = @[@"janatan", @"fred", @"john", @"cristiano", @"vein", @"emma", @"shyla"];
    NSArray *age = @[@"23", @"35", @"12", @"24", @"22", @"34", @"56"];
    NSArray *sex = @[@"male", @"male", @"male", @"male", @"male", @"famale", @"famale"];
    NSString *query2 = [NSString stringWithFormat:@"select * from table1 where name = '%@'", [name lastObject]];
    //NSLog(@"query : %@", query2);
    BOOL recordExist = [self recordExistOrNot:query2];
    if (!recordExist) {
        for (int i = number; i < [idd count]; i++)
        {
            NSString *a = [idd objectAtIndex:i];
            NSString *b = [name objectAtIndex:i];
            NSString *c = [age objectAtIndex:i];
            NSString *d = [sex objectAtIndex:i];
            NSString *query = [NSString stringWithFormat:@"insert into table1 (id, name, age, sex) values ('%@', '%@', '%@', '%@')", a, b, c, d];
            NSLog(@"%@", query);
            [self executeQuery:query];
        }
    }
}

我想要两件事,但我没有发现任何事情。

首先:如果在上面的代码中更改了一个或两个名称(例如NSArray *名称为:

{@"janatan", @"louis", @"john", @"fredrick", @"vein", @"emma", @"shyla"}

我如何编辑我的表 SQLite DB 并替换louis&amp; fredrick代替fred&amp; cristiano?)

第二:如果在上面的代码中删除了一个或两个名称(例如NSArray *名称为:

{@"janatan", @"john", @"vein", @"emma", @"shyla"}

如何删除记录已删除的名称?)

非常感谢。

1 个答案:

答案 0 :(得分:1)

为此你可以使用UPDATE Query。

尝试使用具有唯一标识值的run for循环并更新值。

UPDATE table1 SET ContactName='newName' WHERE id=uniqu_id

使用这个。

NSString *query = [NSString stringWithFormat:@"UPDATE table1 SET  name='%@' WHERE id='%@' ,[dic objectForKey:@"name"],[dic objectForKey:@"id"]];

EDIT

NSString *query = [NSString stringWithFormat:@"UPDATE table1 SET  name='%@',age='%@' WHERE id='%@' ,[dic objectForKey:@"name"],[dic objectForKey:@"age"],[dic objectForKey:@"id"]];