2010-08-13 61 views
1

嗨,我使用FMDB從SQLITE數據庫檢索數據。在SQLite中插入數據的問題?

db = [[FMDatabase alloc] initWithPath:path]; 
[db open]; 
FMResultSet *fResult= [db executeQuery:@"SELECT * FROM Users"]; 

aUsers = [[NSMutableArray alloc] init]; 
while([fResult next]) 
{ 
    userData = [fResult stringForColumn:@"Name"];  
    lblUsers.text=[lblUsers.text stringByAppendingString:userData]; 
    [aUsers addObject:userData];   
    NSLog(@"The data is %@=",userData); 
} 
[db close]; 
[aUsers release]; 
[db release]; 

,所以我就輸出到這個計劃是

薩欽拉胡爾·德拉維德

但是當我嘗試將數據插入到DATABSE, 我用下面的編碼

[db beginTransaction]; 
[db executeUpdate:@"insert into users (name) values('Balaji R')" ,nil]; 
[db commit]; 

現在我再次從數據庫中檢索數據。 所以我就這樣

薩欽拉胡爾·德拉維德巴拉吉[R

一個輸出,而當我離開應用程序,然後再bulid它, 現在我只看到舊記錄

薩欽拉胡爾Dravid

插入錄製的「巴拉吉R」消失了!

任何人都知道我做了錯誤呢?請告訴我解決......

+1

我在VisualStudio中使用過SQLite,每次構建時,它都會將SQLite數據庫文件從資源文件夾複製到bin文件夾中。這意味着每個構建/執行都將以相同的基本版本數據庫開始,並且在一個調試會話期間對數據庫所做的更改不會持續到下一個。不知道您是否遇到相同的現象... – FrustratedWithFormsDesigner 2010-08-13 13:54:32

+0

「路徑」的值是什麼? executeUpdate返回一個'BOOL'檢查返回值。 不需要SQL字符串後的',nil' – falconcreek 2010-08-13 14:16:34

+0

路徑值是/ Users/balajir/Library/Application Support/iPhone Simulator/4.0.1/Applications/7E4DB460-41B2-4AD4-B80C-7E4735104C15/DBTesting.app/MyDataNew .sql executeUpdate返回「YES」。 有什麼辦法可以將數據保存在數據庫中嗎? – 2010-08-16 05:09:09

回答

2

您正在嘗試寫這是不允許的應用程序包目錄。您必須將您的起始數據庫複製到用戶的Documents目錄並將副本的路徑傳遞到FMDB initWithPath:請看iOS Application Programming Guide。看看CoreDataBooks示例代碼。應用程序代理的代碼爲persistentStoreCoordinator,您可以將其用作實現的指導。