2013-07-25 2 views
0

이 코드를 사용해 보겠습니다.sqlite에 특수 문자를 삽입하십시오.

query = [NSString stringWithFormat:@"INSERT INTO Bookmark(Names,Details) Values('%@','%@')", delegate.str, delegate.str1]; 

    NSLog(@"%@",query); 

    sqlite3_stmt *compiledStatement; 

    if (sqlite3_open([databasepath UTF8String],&database) == SQLITE_OK) 
    { 

     if(sqlite3_prepare_v2(database,[query UTF8String], -1, &compiledStatement, NULL) == SQLITE_OK) 
     { 
      if(SQLITE_DONE != sqlite3_step(compiledStatement)) 
       NSLog(@"Error while inserting data: '%s'", sqlite3_errmsg(database)); 
      else 
       NSLog(@"New data inserted"); 

      sqlite3_reset(compiledStatement); 
     }else 
     { 
      NSLog(@"Error while inserting '%s'", sqlite3_errmsg(database)); 
     } 
     sqlite3_finalize(compiledStatement); 
    } 

이 내가 즐겨 INTO sqlite가 INSERT를 저장할 것입니다 (세부 사항) 값이 ('의 예로 들어 보자, 23,456,789 단위의 장소부터 같이

(13)가 세 쌍둥이를 확인, 7, 11로 나눈.

23 ... 456 ...

789 지금 다른 세 쌍둥이 추가

23 + 789 = 812 및 456

,536,913을 두 합계 63,210

차이 : 812-456 = 356

이제 우리는 알림을받을 우리 알림 6

얻을, (7)에 의해 차이를 나누는 11 의해 차이를 나누는 4

및 38 : ...

2013년 7월 25일 16, 우리가)

'알림 5를 얻을 수 (13)에 의해이 차이를 분할 그리고이 오류가 후에 당신의 라인을 쓰기 14.653 수학 트릭 팁 패티를 erns [4346 : c07] '근처's "을 (를) 삽입하는 동안 오류가 발생했습니다. 구문 오류 '

어떻게하면 좋을까요? 미리 감사드립니다.

+3

stringWithFormat 등을 사용하여 수동으로 SQL 쿼리를 구성하면 안됩니다. 변수 바인딩/prepared 문에 표준 sqlite API를 사용하십시오. –

+0

'근처'를 삽입하는 중 오류가 발생했습니다 : 구문 오류 '로그입니다. – Vasu

+0

'값 ('다음과 같이하십시오. '- 잘못된 것이 있습니까 ??? ??? 준비된 문과 변수 바인딩을 사용했습니다.) –

답변

4

수동 stringWithFormat 등

가 대신 변수 바인딩과 함께 준비된 문을 사용해야합니다 사용하여 SQL 쿼리를 형성해서는 안됩니다. 이것은 올바른 인코딩을 보장하고 SQL 인젝션 등을 피할 것입니다. this sqlite introduction에서부터 시작해야합니다.

기본 패턴은 sqlite3_prepare 다음에 sqlite3_bind_text과 같은 값을 사용하여 쿼리의 ? 자리 표시 자 중 하나의 값을 설정하는 것입니다.

+0

이 코드를 사용하여 데이터를 삽입하는 방법을 알려주십시오. – Vasu

+0

나는 당신이 말한 것을 정확히 이해하지 못합니다 ...... – Vasu

+0

SQL injections? Pardon me, but who –

관련 문제