【问题标题】:Objective-C SQLite join tables from multiple database来自多个数据库的 Objective-C SQLite 连接表
【发布时间】:2011-10-04 00:59:26
【问题描述】:

我正在做一个 IPAD 项目。该项目有2个sqlite数据库。第一个是customer.sqlite,第二个是address.sqlite。 Customer.sqlite 随应用程序一起提供,每次启动应用程序时都会从服务器下载 address.sqlite。一切正常。 我在这里的问题是,我可以使用objective-c 对2 个不同数据库中的2 个表进行连接吗?

我可以使用 sqlite3_open(filename, sqliteconnection) 打开与单个数据库的连接,如何将另一个数据库附加到同一连接?这可能吗??

谢谢

苏雷什·库马尔·纳拉亚纳萨米

【问题讨论】:

    标签: objective-c xcode ipad sqlite mobile


    【解决方案1】:

    不,你不能。但是使用 Objective-C 代码而不是使用 SQ 进行 JOIN 应该没有任何缺点(除了使用 SQL 而不是 Objective-C 进行 JOIN 可能更舒服)。

    相关:How to Merge Multiple Database files in SQLite?

    【讨论】:

    • 好的,找到了答案。下面是示例方法
    【解决方案2】:

    好的,找到答案了。下面是示例代码

    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));
    
         }
    }    
    

    谢谢

    苏雷什·库马尔·纳拉亚纳萨米

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-03
      • 2011-10-29
      • 2013-05-11
      相关资源
      最近更新 更多