2013-10-07 3 views
2

저는 몇 시간 동안 문제를 해결하고 외부 입력에 감사 할 것입니다. 저는 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); 

이 코드가있는 UIButton을 클릭 한 후 IBAction를 실행하지만, 앞서 언급은 UI를하는 과정에서 걸려 :

여기에 코드입니다. 상기 코드의 출력은 다음

* execUpdate : 갱신을 ListItem 세트 상태 = 0, 메시지 = ""GPSLong = 44.48916, GPSLat = 6.28739, lastUpdated = 날짜 시간 ('현재') 여기서, 사용자 ID = 1 *

누구든지이 코드가 끊어지는 것을 볼 수 있습니까?

Xcode 메모리 누수 문제가있는 것처럼 보입니다. 시간이 지나면 벽을 두드리고 벽을 닫고 다시 시작하여 문제를 해결했습니다.

+0

sql 문 (injection etc ...)의 문자열 형식을 지정하면 안됩니다. params를 사용하십시오. 참조 : http://stackoverflow.com/questions/10424043/right-way-of-inserting-data-into-sqlite-db-iphone/10424264#10424264 – bryanmac

답변

1

다른 프로세스/스레드가 데이터베이스에 대해 열린 트랜잭션을 가지고 있지 않습니까? 이로 인해이 문제가 발생합니다.

+0

문제가 다시 발생했으며 이것이 문제였습니다. 잘 잡으세요! 작동하는 기능을 얻으려고, 각보기 컨트롤러 (나는 좋은 연습을 알고)에 대한 새 SQLite 데이터베이스 인스턴스를 열었습니다. 이후 인스턴스 컨트롤러를 통해 인스턴스화 된 인스턴스를 전달하도록 변경했습니다. –

관련 문제