【问题标题】:Import my sql file in my iOS app在我的 iOS 应用程序中导入我的 sql 文件
【发布时间】:2013-01-17 12:34:24
【问题描述】:

我的 Mac OSX 有 SQLite Studio,我在那里创建了我的模式,在 MySQL 中我使用 DBFork Manager 一个案例工具来制作我的模式,我导出 sql 文件然后导入 MySQL 服务器,所以我想做同样的事情为我使用 SQLite 的 iOS 应用程序。

我的意思是,我创建了我的 SQLite Schema,然后我需要从 *.sql 文件导入我的应用程序,我使用 SQL 字符串给出我的代码示例...希望你能帮助我!

- (void)viewDidLoad {
NSString *docsDir;
NSArray *dirPaths;

// Get the documents directory
dirPaths = NSSearchPathForDirectoriesInDomains(
                                               NSDocumentDirectory, NSUserDomainMask, YES);

docsDir = dirPaths[0];

// Build the path to the database file
_databasePath = [[NSString alloc]
                 initWithString: [docsDir stringByAppendingPathComponent:
                                  @"contacts.db"]];

NSFileManager *filemgr = [NSFileManager defaultManager];

if ([filemgr fileExistsAtPath: _databasePath ] == NO)
{
    const char *dbpath = [_databasePath UTF8String];

    if (sqlite3_open(dbpath, &_contactDB) == SQLITE_OK)
    {
        char *errMsg;
        const char *sql_stmt =
        "CREATE TABLE IF NOT EXISTS CONTACTS (ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT, ADDRESS TEXT, PHONE TEXT)";

        if (sqlite3_exec(_contactDB, sql_stmt, NULL, NULL, &errMsg) != SQLITE_OK)
        {
            _status.text = @"Failed to create table";
        }
        sqlite3_close(_contactDB);
    } else {
        _status.text = @"Failed to open/create database";
    }
}
[super viewDidLoad];

}

【问题讨论】:

  • 还有什么问题?你不知道如何读取文件吗?
  • 我知道,但我认为我的问题是那个 sql 文件的目录,例如我在我的项目中添加了 SQL 文件,然后我使用: NSArray *path = NSSearchPathForDirectoriesInDomains(???, NSUserDomainMask,是的);所以,当应用程序完成时,我的项目路径将可用,以及如何将 NSString 转换为 char,因为在 sqlite_exec(_db, sql_stmt

标签: iphone ios file sqlite import


【解决方案1】:

我假设您在 SQLite 中有一个数据库文件,并且想要安装它以在您的 iPhone 上使用。如果你在你的程序中编译它,那么它将在文件包中。然而,这是只读的,所以如果你想改变你的数据库,你需要将它复制到 iphone 的文档目录(或另一个更合适的目录)。查看此 stackoverflow 问题的答案:

SQLite on iPhone

【讨论】:

  • 好的,谢谢,也就是说我可以在“document”目录下添加编译前的文件,然后修改它的代码。
  • 当您将文件添加到您的项目时,它最终会出现在项目的包中。一旦您的应用程序安装在设备上,您的应用程序必须先将原始数据库复制到文档目录(或另一个可写目录),然后才能获得对数据库的写入权限。 (即您必须从您的应用程序中打开目录中的数据库,而不是捆绑包中的数据库)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-15
  • 2013-08-08
  • 2012-05-09
  • 1970-01-01
  • 1970-01-01
  • 2014-11-11
相关资源
最近更新 更多