Iphone SQlite - заполнить таблицу из текстового поля - PullRequest
0 голосов
/ 21 февраля 2010

Я пытаюсь предварительно заполнить мою таблицу SQlite из текстового файла - несмотря на то, что она хорошо компилируется, строки не будут вставлены:

NSLog(@"Insert Table for English");


    char *errorMsg;

    NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath ] stringByAppendingPathComponent:@"english.sql"];

    NSLog(@"DefaultPath: %@", defaultDBPath);

    NSString *sql = [[[NSString alloc] initWithContentsOfFile:defaultDBPath  
                                           encoding:NSUTF8StringEncoding 
                                              error:NULL] autorelease];

    if (sqlite3_exec(database,[sql UTF8String],NULL,NULL, &errorMsg) != SQLITE_OK) {
        NSAssert1(0, @"Error loading update file: %s", errorMsg);
    }

    NSLog(@"I should have written something");

Вот так выглядит мой текстовый файл:

BEGIN TRANSACTION;
INSERT INTO PARTNER(branche) VALUES('Choose music for the Ceremony');
COMMIT;

Я создаю базу данных здесь:

-(void)createDatabase {

NSUserDefaults *userSETTINGS = [NSUserDefaults standardUserDefaults];

NSLog(@"HUHU - schau ma mal: Database = %d", [userSETTINGS integerForKey:@"Database"]);


if ([userSETTINGS integerForKey:@"Database"] == 0) {


    if (sqlite3_open([[self dataFilePath] UTF8String], &database) != SQLITE_OK) {
        sqlite3_close(database);
        NSAssert(0, @"Failed to open database");
    }

    char *errorMsg;
    //sqlite3_stmt *statement;
    NSString *createSQL = @"CREATE TABLE IF NOT EXISTS PARTNER (id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, branche TEXT, company TEXT, name TEXT, phone TEXT, email TEXT, price INT, notes TEXT, done TEXT);";
    if (sqlite3_exec(database, [createSQL UTF8String], NULL, NULL, &errorMsg) != SQLITE_OK) {
        sqlite3_close(database);
        NSAssert1(0, @"Error createing table: %s", errorMsg);
    }

    NSUserDefaults *userSETTINGS = [NSUserDefaults standardUserDefaults];
    [userSETTINGS setInteger:1 forKey:@"Database"];

    NSLog(@"HUHU - schau ma mal: Database = %d", [userSETTINGS integerForKey:@"Database"]);

[self fillDatabase];

} else {

    NSLog(@"Database wurde schon angelegt");
    [self readDatabase];

}

}

Файл журнала сообщает my, что defaultDBPath:

DefaultPath: / Users/ sl / Библиотека / Поддержка приложений / iPhone Simulator / Пользователь / Приложения / 0BE2EDC6-F070-43BE-9666-310257B495B9 / WeddingPlanner.app / english.sql

Чего мне не хватает?БД верна, путь в порядке, но ничего не будет написано ...

Спасибо за ваши ответы, помощь, совет ...: -)

BR,

Stefan


Еще раз спасибо за вашу постоянную помощь ...

Я изменился следующим образом:

if (sqlite3_open_v2([[self dataFilePath] UTF8String], &database, SQLITE_OPEN_READWRITE, nil) != SQLITE_OK) {
        sqlite3_close(database);
        NSAssert(0, @"Failed to open database");
    }

    NSLog(@"Insert Table for English");


    char *errorMsg;

    NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath ] stringByAppendingPathComponent:@"e.sqlite"];

    NSLog(@"DefaultPath: %@", defaultDBPath);

    NSString *sql = [[[NSString alloc] initWithContentsOfFile:defaultDBPath  
                                           encoding:NSUTF8StringEncoding 
                                              error:NULL] autorelease];

    if (sqlite3_exec(database,[sql UTF8String],NULL,NULL, &errorMsg) != SQLITE_OK) {
        NSAssert1(0, @"Error loading update file: %s", errorMsg);
    }

    NSLog(@"Hier hätte ich schreiben sollen");

Мой журнал выглядит так:

2010-02-21 20: 37: 41.666 WeddingPlanner [61189: 207] Нет при запуске 2010-02-21 20: 37: 41.668 WeddingPlanner [61189: 207] HUHU - schau ma mal: База данных = 1 2010-02-21 20: 37: 41.669 WeddingPlanner [61189: 207] База данных wurde schon angelegt 2010-02-21 20: 37: 41.670 WeddingPlanner [61189: 207] Abfrage: ВЫБЕРИТЕ СУММУ (цена) ОТ ПАРТНЕРА 2010-02-21 20: 37: 41.671 WeddingPlanner [61189: 207] Нет на старте 2010-02-21 20: 37: 41.672 WeddingPlanner [61189: 207] Die Gesetzte Sprache: (ноль) 2010-02-21 20: 37: 41.682 WeddingPlanner [61189:207] Abfrage: ВЫБЕРИТЕ СУММУ (цена) ОТ ПАРТНЕРА 2010-02-21 20: 37: 41.683 WeddingPlanner [61189: 207] Нет на старте 2010-02-21 20: 37: 41.685 WeddingPlanner [61189: 207] HUHU - schau mamal: (null) 2010-02-21 20: 37: 41.685 WeddingPlanner [61189: 207] calcDateDifference 2010-02-21 20: 37: 41.691 WeddingPlanner [61189: 207] Das Datum DAY = -3338 wait_fences: не удалось получить ответ: 10004003 2010-02-21 20: 37: 56.597 WeddingPlanner [61189: 207] Английский 2010-02-21 20: 37: 56.599 WeddingPlanner [61189: 207] Die gespeicherte Sprache: EN 2010-02-21 20: 37: 56.600 WeddingPlanner [61189:207] Вставить таблицу для английского языка 2010-02-21 20: 37: 56.602 WeddingPlanner [61189: 207] DefaultPath: / Users / sl / Библиотека / Поддержка приложений / iPhone Simulator / Пользователь / Приложения / D79C5BB0-B4E1-4AD7-8B9B-E4493D82F64D/WeddingPlanner.app/e.sqlite

Так что все выглядит хорошо - БД будет создана, БД может быть открыта (потому что нет ошибок), я могу вставить (просмотреть GUI) данныев таблицу "партнер", но я не могу вставить данные через файл ...

1 Ответ

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