2012-05-25 2 views
0

3 개의 SQLite 테이블이 있습니다. 각각 ID를 기본 키로 사용합니다. ID에 레코드를 삽입 할 때 NULL을 제공하면 키가 자동으로 증가합니다 (최소한 SQLite 문서가 말하는 것입니다). 이 삽입 문에 NULL을 가져 오려고하지만 충돌이 발생합니다 ('NSInvalidArgumentException', 이유 : '* - [NSPlaceholderString initWithFormat : 로캘 : 인수 :] : nil 인수' ). 이 SQLite insert 문에 NULL을 어떻게 가져 옵니까?

 dbCmd = @"INSERT INTO CustData (ID, BUS_NAME, EMAIL, PHONE, SHOP_NAME, SHOP_ADDR1, SHOP_ADDR2, SHOP_CITY_STATE, SHOP_ZIP, " 
    "SHIP_NAME, SHIP_ADDR1, SHIP_ADDR2, SHIP_CITY_STATE, SHIP_ZIP, SALES_NAME, NOTES) VALUES('"; 
    dbCmd = [dbCmd stringByAppendingFormat:NULL]; // <-------------------- 
    dbCmd = [dbCmd stringByAppendingString: [methodParameters objectForKey: @"businessName"]]; 
    dbCmd = [dbCmd stringByAppendingString: @"', '"]; 
    dbCmd = [dbCmd stringByAppendingString: [methodParameters objectForKey: @"email"]]; 
가 어떻게이 문제를 해결합니까 : 여기 (dbCmd가있는 NSString로 정의된다) 문의 조각은 무엇입니까? SQLite는 문서에서

+0

INSERT에서 ID를 생략하지 않는 특별한 이유가 있습니까? – Kjir

+0

나는 기본 키인 ID를 가져야한다고 생각했기 때문에 SQLite는 자동 증가시킬 수 있습니다. 생략하면 생략해도 여전히 제대로 작동합니까? – SpokaneDude

+0

예! ID를 생략하면 자동 증분됩니다 (자동 증가 열일 경우) – Kjir

답변

0

:

더 ROWID가 삽입에 지정되지 않았거나 지정된 ROWID가 NULL의 값이있는 경우, 적절한 ROWID가 자동으로 생성됩니다.

http://www.sqlite.org/autoinc.html

당신이 ID를 지정하는 특별한 이유가 없다면, 당신은 단순히 그것을 밖으로 남길 수 있습니다!

+0

저를 위해 그것을 정리해 주셔서 감사합니다 ... 나는 그것을 읽었지만 실제로는 분명히 이해하지 못했습니다. :디 – SpokaneDude

관련 문제