Соединение таблиц Obite-C SQLite из нескольких баз данных - PullRequest
4 голосов
/ 13 июля 2011

Я работаю над проектом IPAD.Проект имеет 2 базы данных sqlite.первый говорит customer.sqlite, а второй называется address.sqlite.Customer.sqlite поставляется вместе с приложением, и адрес.sqlite загружается с сервера при каждом запуске приложения.Все отлично работаетВопрос, который у меня здесь есть, могу ли я сделать объединение на 2 таблицы, которые находятся в 2 разных базах данных, используя target-c.

Я могу открыть соединение с одной базой данных, используя sqlite3_open (имя файла, sqliteconnection), как мне присоединить другую базу данных к тому же соединению?Это возможно ??

Спасибо

Суреш Кумар Нараянасами

Ответы [ 2 ]

8 голосов
/ 13 июля 2011

Хорошо, узнал ответ.Ниже приведен пример кода

sqlite3 *_myLocalConnection;

if (sqlite3_open([["Your First DB file path"] UTF8String], &_myLocalConnection) == SQLITE_OK)
{
   NSString *strSQLAttach = [NSString stringWithFormat:@"ATTACH DATABASE \'%s\' AS SECOND", [["Your second db file path"] UTF8String] ];
   char *errorMessage;

   if (sqlite3_exec(_myLocalConnection, [strSQLAttach UTF8String], NULL, NULL, &errorMessage) == SQLITE_OK)
   {
      sqlite3_stmt *myStatment;

      NSString *strSQL = @"select * from SECOND.ADDRESS myAddress inner join main.CUSTTOMER myCustomer on myAddress.CustomerID = myCustomer.customerID ";      

      if (sqlite3_prepare_v2(_myLocalConnection, [strSQL UTF8String], -1, &myStatment, nil) == SQLITE_OK)
        //do your loop logic
      else
         NSLog(@"Error while attaching '%s'", sqlite3_errmsg(_myLocalConnection));

     }
}    

Спасибо

Суреш Кумар Нараянасами

1 голос
/ 13 июля 2011

Нет, вы не можете. Но не должно быть никаких недостатков при выполнении JOIN с Objective-C-кодом вместо использования SQ (за исключением того, что вам может быть удобнее выполнять JOIN в SQL, а не Objective-C).

Похожие: Как объединить несколько файлов базы данных в SQLite?

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