2010-08-15 42 views
4

這裏是我的問題,通過終端使用SQLite 3相互作用,可以通過執行這個命令執行存儲在一個txt文件,SQL語句時:如何在sqlite3的通過客觀-C運行SQL腳本文件

.read filename 

有沒有辦法通過Objective-C的代碼做這樣的事情?即我已經在代碼中連接了一個sqlite3數據庫文件,並且我想以編程方式運行腳本文件。

回答

1

您可以通過行轉發文件行的內容,或在整體功能exec

+0

感謝您的答覆,所以,我想這意味着我必須將文件讀入字符串自己,然後把整個作爲一個大的SQL語句執行呢? – 2010-08-15 22:00:06

+0

這是我看到的唯一可行的解​​決方案。我也考慮過控制進程的標準輸入並傳遞命令讀入它,但我不確定這是否可行。你可以試試,但正如我所說不知道它是否有效。 – schoetbi 2010-08-15 22:10:25

+0

謝謝,我試圖一次運行腳本,但它沒有奏效。然後我讀入文件並逐行執行,賓果!再次感謝。 – 2010-08-15 23:02:09

5

我知道這是一個很古老的問題。我只是想我要離開,我只是以防有人使用的代碼人會覺得它有用

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