【问题标题】:how to run sql script file in sqlite3 through objective-C如何通过objective-C在sqlite3中运行sql脚本文件
【发布时间】:2011-03-30 04:42:44
【问题描述】:

这是我的问题,通过终端与Sqlite 3交互时,可以通过执行以下命令来执行存储在txt文件中的SQL语句:

 .read filename

有没有办法通过 Objective-C 代码来做这样的事情?即我在代码中连接了一个 sqlite3 db 文件,我想以编程方式运行一个脚本文件。

【问题讨论】:

    标签: objective-c sqlite


    【解决方案1】:

    您可以将文件的内容逐行转发,也可以全部转发给函数exec

    【讨论】:

    • 感谢您的回复,所以,我想这意味着我必须自己将文件读入字符串,然后将整个文件作为一个大 SQL 语句执行?
    • 这是我看到的唯一可行的解​​决方案。我还考虑过控制进程的标准输入并将命令 .read 传递给它,但我不确定这是否可行。您可以尝试一下,但正如我所说的不确定它是否有效。
    • 谢谢,我尝试一次性运行脚本,但没有成功。然后我读入文件并逐行执行,宾果!再次感谢。
    • 你是如何“逐行”完成的?
    • @rckehoe:这仅在一行是完整的语句时才有效。然后从文件中读取一行并传递给 exec。或者读取文件的完整内容并将整个字符串传递给 exec(如果不是太大)
    【解决方案2】:

    我知道这是一个非常古老的问题。我只是想我会留下我使用的代码,以防其他人发现它有用

    -(BOOL)execFile:(NSString*)filepath
    {
        NSError* error;
        NSString* content = [NSString stringWithContentsOfFile:filepath encoding:NSUTF8StringEncoding error:&error];
        if(error)
        {
            return NO;
        }
        char* execError;
        int x = sqlite3_exec(_database, [content UTF8String], nil, nil, &execError);
        if(execError)
        {
            NSLog(@"%s", execError);
        }
        return x == SQLITE_OK;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-14
      • 2012-05-19
      • 2017-07-28
      • 2020-09-30
      • 2018-08-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多