Проблема записи в базу данных - PullRequest
0 голосов
/ 15 апреля 2011

получение ошибок при попытке записи в базу данных SQL с использованием 2 следующих функций:

- (void)viewDidLoad 

   NSString *dbName = @"TrackDate.sqlite";
    [dbName retain];

    NSString *docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,                                             
    NSUserDomainMask, YES) objectAtIndex:0];
    NSString *dbPath = [docDir stringByAppendingPathComponent:dbName];


    NSFileManager *fileManager = [NSFileManager defaultManager];
    BOOL exists = [fileManager fileExistsAtPath:dbName];
    if (exists == false) {
        NSString *resourcePath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:dbName];
        [fileManager copyItemAtPath:resourcePath toPath:dbPath error:nil];
        [fileManager release];
    }

    sqlite3_open ([dbPath UTF8String], &database);
}

Используются переменные

char *sql = "Insert into Daten (Latitude, Longitude, Altitude, Speed, Course, Time) Values (?, ?, ?, ?, ?, ?, ?)";
    sqlite3_prepare_v2(database, sql, -1, &addStmt, NULL);

    sqlite3_bind_text(addStmt, 1, [latitude UTF8String], -1, SQLITE_TRANSIENT);
    sqlite3_bind_text(addStmt, 2, [longitude UTF8String], -1, SQLITE_TRANSIENT);
    sqlite3_bind_text(addStmt, 3, [altitude UTF8String], -1, SQLITE_TRANSIENT);
    sqlite3_bind_text(addStmt, 4, [speed UTF8String], -1, SQLITE_TRANSIENT);
    sqlite3_bind_text(addStmt, 5, [course UTF8String], -1, SQLITE_TRANSIENT);
    sqlite3_bind_text(addStmt, 6, [date UTF8String], -1, SQLITE_TRANSIENT);

    if (SQLITE_DONE != sqlite3_step(addStmt)) {
        recordLabel.text = @"Error!";
    }

    sqlite3_reset(addStmt);
}

Ответы [ 3 ]

1 голос
/ 15 апреля 2011
char *sql = "Insert into Daten (Latitude, Longitude, Altitude, Speed, Course, Time) Values (?, ?, ?, ?, ?, ?, ?)";

В операторе SQL есть ошибка: шесть столбцов, семь заполнителей.

0 голосов
/ 15 апреля 2011

Вы передаете шесть имен полей и присваиваете семь значений.

заменить это

char * sql = "Вставить в Daten (широта, долгота, высота, скорость, курс, время) значения (?,?,?,?,?,?,?)";

с

char * sql = "Вставить в Daten (широта, долгота, высота, скорость, курс, время) значения (?,?,?,?,?,?)";

0 голосов
/ 15 апреля 2011
sqlite3_stmt *statement = nil;
    char sql[1000];
write values according to your self.
    sprintf(sql, "Insert into *your table name* values ('%s', '%s')",[productId UTF8String], [folderId UTF8String]);

// path будет содержать путь к вашей базе данных.

    NSString *path = [self GetDatabasePath] ;
    if(sqlite3_open([path UTF8String],&database) == SQLITE_OK )
    {
        if((sqlite3_prepare_v2(database, sql, -1, &statement, NULL)) == SQLITE_OK)
        {   
            //NSLog(@"%s",sql);
            sqlite3_step(statement);
        }
        sqlite3_finalize(statement);
    }
    sqlite3_close(database);

Happy coding !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...