Импорт данных в Sqlite3 - PullRequest
       6

Импорт данных в Sqlite3

1 голос
/ 27 февраля 2012

Мы используем SQLite для нашего проекта iPad.Мы импортируем данные из другого SQLite.После импорта данных мы не можем вставить данные обратно в Sqlite из viewcontroller.Выдает ошибку, когда мы пытаемся получить доступ к тому же на устройстве, в то время как то же самое работает в симуляторе.

Ошибка от устройства: * Ошибка подтверждения в - [DataBaseSharedManager insertLoginDetails:], / Users/ vidya / Desktop / eDetail_feb27 / eDetail / Classs / Файлы базы данных / DataBaseSharedManager.m: 165 27 февраля 18:07:17 unknown eDetail [1866]: Завершение работы приложения из-за необработанного исключения «NSInternalInconsistencyException», причина:'Ошибка: не удалось сохранить приоритет с сообщением 'образ диска базы данных имеет неверный формат'' ** стек Первый бросок вызова: (0x33e758bf 0x352901e5 0x33e757b9 0x3289f3b3 0x336b15 0xae887 0x33dd422b 0x32fd8b 0x328fcc39 0x328546e9 0x328546b3 0x328545d5 0x375048a5 0x374f9545 0x374f9639 0x374f9243 0x374f9179 0x33e49b03 0x33e492cf 0x33e48075 0x33dcb4dd 0x33dcb3a50x306b6fcd 0x32393743 0xab125 0xab0bc)

Примечание. Наш файл SQlite имеет размер 36 МБ.

Код для справки:

NSArray *paths                  = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory    = [paths objectAtIndex:0];
    NSString *writableDBPath        = [documentsDirectory stringByAppendingPathComponent:@"eTest.sqlite"];


    if (sqlite3_open([writableDBPath UTF8String], &database) == SQLITE_OK){

        NSString *sSqlSelect = [NSString stringWithFormat:@"Insert into LOGIN (LoginId, UserName, Password, LastSyncDate, SFId,SecurityToken, AccountType, SFUserId,Region,ModifiedDate) values (\"%@\", \"%@\", \"%@\", \"%@\", \"%@\", \"%@\", \"%@\", \"%@\", \"%@\", \"%@\")", [pDict objectForKey:@"LoginId"],[pDict objectForKey:@"UserName"],[pDict objectForKey:@"Password"],[pDict objectForKey:@"LastSyncDate"],[pDict objectForKey:@"SFId"],[pDict objectForKey:@"SecurityToken"], [pDict objectForKey:@"AccountType"], [pDict objectForKey:@"SFUserId"],[pDict objectForKey:@"Region"],[pDict objectForKey:@"ModifiedDate"]]; 

        sqlite3_stmt *insertValue;
        int nResult = sqlite3_prepare_v2(database, [sSqlSelect UTF8String],-1,&insertValue,NULL);
        if(nResult == SQLITE_OK){
            sqlite3_step(insertValue);
        }else{
            NSAssert1(0,@"Error:failed to save priority with message '%s'",sqlite3_errmsg(database));
        }
        sqlite3_finalize(insertValue);
    }else{
        sqlite3_close(database);
        NSAssert1(0, @"Failed to open database with message '%s'.", sqlite3_errmsg(database));
    }

Для транзакции: Мы экспортируем данные изодин SQLite и япортирование той же таблицы в другой SQLite.Для этого мы используем Firefox SQLite Manager.

1 Ответ

0 голосов
/ 28 февраля 2012

Я думаю, что когда вы импортируете базу данных с помощью Firefox, она повреждена.

Я думаю, что вы можете сделать это, кодируя прочитанные данные из одного файла sqlite и сохраняя его в другом файле sqlite. Вы можете просто сделать короткий код отдельно для него, а затем просто скопировать и вставить файл sqlite в основной комплект.

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