2013-05-09 2 views
0

FMDB에서 값을 테이블에 삽입하는 데 문제가 있습니다. 는이 같은 SQL 문자열이 있습니다FMDB를 사용하여 SQLite에 특수 문자를 삽입하십시오.

NSString *sql = [NSString stringWithFormat:@"INSERT INTO table(COMPANY, PAGE_NO) VALUES ('%@',%d,%d)",value1,value2,value3]; 

을 그리고 위의 SQL 문자열을 다음과 같이 FMDB를 사용

[FMDatabase: 0x433e80> executeUpdate: sql] 

그것은 작동하지만 내가 value1 = @"Test'12"를 사용하는 경우. 문자가 " ' "이고 실패합니다.

이 제발 도와주세요, 나는 당신이이 열을 나열하고 당신이 당신의 질의에 정확한 수의 매개 변수를 전달하지 않는 것처럼

답변

4

이 보이는

이 감사 FMDB에서 방법 executeUpdate을 계속 사용하고 싶은 3 개의 매개 변수를 전달합니다. 나는 그것이 오타라고 생각할 것이다.

정말 쿼리를 매개 변수화해야합니다. 매개 변수가있는 ?을 사용하고 대신 executeUpdate으로 전달하십시오. 그러면 문제가있는 문자가 자동으로 처리됩니다.

이렇게하면 코드가 더 비슷해집니다.

NSString *sql = @"INSERT INTO table(COMPANY, PAGE_NO) VALUES (?,?)"; 
[database executeUpdate:sql, value1, [NSNumber numberWithInt:value2], nil]; 

executeUpdate 때문에, NSNumberint을 변환 할 필요 numberWithInt에 대한 호출이 객체가 아닌 기본 형식으로 모든 인수가 필요합니다.

관련 문제