我一直在研究一個問題幾個小時,並會感謝任何外部輸入。我是iOS,Objective-C和SQLite的新手,並嘗試執行SQLite Update語句。問題在於UI凍結並似乎掛在SQLite中的一個進程中。SQLite數據庫在更新時掛起
下面的代碼:
NSString *docsPath = [paths objectAtIndex:0];
NSString *path = [docsPath stringByAppendingPathComponent:@"SQLite3Database.sqlite"];
SQLite3_instance *db = [SQLite3_instance databaseWithPath:path];
[db open];
NSString *execUpdate = [NSString stringWithFormat:@"update ListItem set status=%i,message=\"%@\",GPSLong=%@, GPSLat=%@,lastUpdated=DateTime('now') where userID = %@",[Status_Picker selectedRowInComponent:0],messageTextField.text , longitude, latitude,loggedinUserID];
NSLog(@"execUpdate: %@", execUpdate);
if (![db executeUpdate:execUpdate])
NSLog(@"Data insert failed %@", db.lastErrorMessage);
此代碼是在IBAction爲點擊一個UIButton後執行,但正如前面提到的,UI是一個過程掛斷了電話。從上面的代碼的輸出是下面的:
* execUpdate:更新列表項設置狀態= 0,消息= 「」,GPSLong = 44.48916,GPSLat = 6.28739,LASTUPDATED =日期時間( '現在'),其中用戶ID = 1 *
任何人都可以看到這個代碼是如何掛起來的嗎?
看起來問題是Xcode內存泄漏。經過幾個小時的衝擊,我的腦袋再次撞到牆壁,關閉並重新啓動,解決了問題。
你不應該格式化sql語句(注入等)。使用參數。請參閱:http://stackoverflow.com/questions/10424043/right-way-of-inserting-data-into-sqlite-db-iphone/10424264#10424264 – bryanmac