Objective c 将NSMutable数组传递到Sqlite3

Objective c 将NSMutable数组传递到Sqlite3,objective-c,database,sqlite,nsmutablearray,Objective C,Database,Sqlite,Nsmutablearray,我有一个NSMutable阵列,用于保存通过iphone从外部传感器捕获的数据。我想将该数组转储到另一个文件中的数据库中。我不知道这是怎么做到的 数据库类 - (id) init { self = [super init]; NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsD

我有一个NSMutable阵列,用于保存通过iphone从外部传感器捕获的数据。我想将该数组转储到另一个文件中的数据库中。我不知道这是怎么做到的

数据库类

- (id) init {
    self = [super init];

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,       NSUserDomainMask, YES);
    NSString *documentsDirecotry = [paths objectAtIndex:0];
    NSString *databaseFilePath = [documentsDirecotry  stringByAppendingPathComponent:@"ForceGaugeDatabase"];

    BOOL databaseExists = [[NSFileManager defaultManager] fileExistsAtPath:databaseFilePath];
    database = [[FMDatabase alloc] initWithPath:databaseFilePath];
    if(!databaseExists){
        [self createDatabase];
    }
    return  self;
}


-(void) createDatabase{

    [database open];

    NSString *query = [NSString stringWithString:@"CREATE TABLE forcegauge (forcelb INTEGER, forcekg INTEGER, forcenewton INTEGER, forceoz INTEGER, analoginput INTEGER);"];
    if([database executeUpdate:query]) {

        for(int i = 0; i < 6 ; i++) {
            query = [NSString stringWithFormat:@"insert into forcegauge (forcelb, forcekg, forcenewton, forceoz, analoginput) values (%d,20,30,40,100,9);", i];
            [database executeUpdate:query];

            query = [NSString stringWithFormat:@"insert into forcegauge (forcelb, forcekg, forcenewton, forceoz, analoginput) values (%d,34,45,55,90,2);", i];
            [database executeUpdate:query];

            query = [NSString stringWithFormat:@"insert into forcegauge (forcelb, forcekg, forcenewton, forceoz, analoginput) values (%d,35,55,65,95,3);", i]; 
            [database executeUpdate:query];

            query = [NSString stringWithFormat:@"insert into forcegauge (forcelb, forcekg, forcenewton, forceoz, analoginput) values (%d,40, 53, 67,90,4);", i];
            [database executeUpdate:query];
        }   
    } else {
        NSLog(@"Error Creating Table");
    }
    [database close];     
}

所以这里KGARRY保存了所有通过外部传感器更新的数据。我想将KGARRY持有的数据传输到ForceGaugeDatabase。

要将数组中的行插入到表中,需要遍历数组并执行查询

NSUInteger totalRows = [firstArray count]; // I suppose, that each array has the same number of items
for (NSUInteger i = 0; i < totalRows; ++i) {
    NSNumber *forcelb = [firstArray objectAtIndex:i];
    NSNumber *forcekg = [secondArray objectAtIndex:i];
    .....
    NSString *query = [NSString stringWithFormat:@"insert into forcegauge (forcelb, forcekg, forcenewton, forceoz, analoginput) values (%f , %f, 53, 67,90,4);", [forcelb doubleValue], [forcekg doubleValue]];
    [database executeUpdate:query];
}

要更新表中的现有行还是插入新行?在代码段中,您已经有了一个如何在表中插入新行的示例。@lunatic我想插入新表。这些插入只是一个测试。但我在另一个类中有五个NSMutable数组,它们保存着从外部传感器捕获的不同值,现在它们都保存着双倍值。所以在我看来,我必须将其提取为NSNumber,并将其存储到变量中。我不知道怎样才能把这些号码传给数据库。
NSUInteger totalRows = [firstArray count]; // I suppose, that each array has the same number of items
for (NSUInteger i = 0; i < totalRows; ++i) {
    NSNumber *forcelb = [firstArray objectAtIndex:i];
    NSNumber *forcekg = [secondArray objectAtIndex:i];
    .....
    NSString *query = [NSString stringWithFormat:@"insert into forcegauge (forcelb, forcekg, forcenewton, forceoz, analoginput) values (%f , %f, 53, 67,90,4);", [forcelb doubleValue], [forcekg doubleValue]];
    [database executeUpdate:query];
}