Копирование таблицы в один бит на другой db

Я хочу скопировать таблицу из aDB в другой bDB.

Поэтому я сделал метод. Я думаю, что открыть базу данных 2 и использовать запрос insert, но я не знаю подробно.

-(void)copyDatabaseTableSoruceFileName:(NSString *)source CopyFileName:(NSString *)copy { sqlite3 *sourceDatabase=NULL; sqlite3 *copyDatabase=NULL; NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES); NSString* documentDir = [paths objectAtIndex:0]; //source [self copyFileIfNeed:source path:documentDir]; NSString *SourceDBPath = [documentDir stringByAppendingPathComponent:source]; if( sqlite3_open([SourceDBPath UTF8String],&sourceDatabase)!= SQLITE_OK ) { NSLog(@"DB File Open Error :%@", SourceDBPath); sourceDatabase = NULL; } //copy [self copyFileIfNeed:copy path:documentDir]; NSString *CopyDBPath = [documentDir stringByAppendingPathComponent:copy]; if( sqlite3_open([CopyDBPath UTF8String],&copyDatabase)!= SQLITE_OK ) { NSLog(@"DB File Open Error :%@", CopyDBPath); copyDatabase = NULL; } //source to copy // How in this area? } 

Это правильно? и как сделать больше? // источник для копирования области.

в sqlite3 вы можете комбинировать ATTACH [1] и CREATE TABLE .. AS [2] команды:

во-первых, вы открываете базу данных «bDB», а затем выполняете следующий оператор:

 ATTACH DATABASE "myother.db" AS aDB; 

После этого вы можете использовать синтаксис CREATE TABLE:

 CREATE TABLE newTableInDB1 AS SELECT * FROM aDB.oldTableInMyOtherDB; 

Это «скопирует» данные в вашу новую базу данных. Если вы хотите объединить данные, есть также инструкция INSERT [3], но вам нужно будет ссылаться на свои поля следующим образом:

 INSERT INTO newtable (field1,field2) SELECT otherfield1,otherfield2 FROM aDB.oldTableInMyOtherDB; 

Рекомендации:

[1] http://www.sqlite.org/lang_attach.html

[2] http://www.sqlite.org/lang_createtable.html

[3] http://www.sqlite.org/lang_insert.html

После нескольких часов борьбы на SO и с помощью вышеупомянутого сообщения, наконец, я смог создать код Objective-C для этого.

 NSString* dbPath1; NSString* dbPath2; dbPath1 = [self getDB1Path]; //This db have the desired table to be copied dbPath2 = [self getDB2Path]; //This needs to have the desired table //open database which contains the desired "table" if (sqlite3_open(dbPath1.UTF8String, &databasePhase2) == SQLITE_OK) { NSString *attachSQL = [NSString stringWithFormat: @"ATTACH DATABASE \"%@\" AS phase2_db",dbPath2]; const char *attachSQLChar = [attachSQL UTF8String]; char* errInfo; int result = sqlite3_exec(databasePhase2, attachSQLChar, nil, nil, &errInfo); if (SQLITE_OK == result) { NSLog(@"new db attached"); NSString *attachSQL = [NSString stringWithFormat: @"CREATE TABLE newTableInDB1 AS SELECT * FROM phase2_db.qmAyahInfo"]; const char *createSQLChar = [attachSQL UTF8String]; int result2 = sqlite3_exec(databasePhase2, createSQLChar, nil, nil, &errInfo); if (SQLITE_OK == result2) { NSLog(@"New table created in attached db"); } } sqlite3_close(databasePhase2); } 
  • Ошибка sqlite make statement - нет такой таблицы
  • Невозможно подключить базу данных SQLite в iOS
  • Обновление sqlite3 не работает в ios
  • Почему я получаю ошибку SQLITE_MISUSE: ошибка в памяти?
  • Как скопировать базу данных sqlite при запуске приложения в iOS?
  • Вопрос о SQLite3 и обновлении приложения для iPhone
  • Запрос SQLite3 (iOs) не выполняется
  • Как обновить данные на сервере db через json api?
  • Приложение iOS для судов с предварительно заполненной базой данных sqlite
  • как добавить столбец в таблице sqlite в SWIFT
  • SQlite Cipher IOS
  • Interesting Posts

    Есть ли библиотека unrar для iOS?

    Две цветные / пользовательские линии на MKPolylineRenderer

    UITableView -headerViewForSection возвращает (null)

    Что вызывает эту ошибку iOS? UICollectionView получил атрибуты макета для ячейки с указательным путем, который не существует

    Обнаружение разрешения медиа-библиотеки ios

    Доступ iOS к функции Safari Reader через интерфейс UIWebView

    Как отобразить индикатор активности в центре UIAlertController?

    QLPreviewController VS UIWebView с точки зрения эффективности рендеринга и использования памяти

    Xcode 4.6 строит, запускает и заканчивает сразу (симулятор iOS 6.1)

    CloudKit – CKQueryOperation с зависимостью

    Безопасность распространения приложений для корпоративных приложений в офисе – OTA iOS

    CATransform3D: вычислять высоту после преобразования перспективы

    Неуравновешенные вызовы для перехода на начало / конец для <UITabBarController: 0x197870>

    Новый экземпляр UIViewController в другом UIViewController: почему я не могу установить переменную экземпляра?

    Почему это мнение волшебным образом меняет размер?

    Давайте будем гением компьютера.