0

3つのSQLiteテーブルがあります。それぞれに主キーとしてIDがあります。IDにレコードを挿入するときにNULLを指定すると、キーが自動的にインクリメントされます(少なくとも、SQLiteドキュメントによるとそうです)。この挿入ステートメントにNULLを取得しようとしていますが、クラッシュします('NSInvalidArgumentException'、理由:' * -[NSPlaceholderString initWithFormat:locale:arguments:]:nil引数')。ステートメントのスニペットは次のとおりです(dbCmdはNSStringとして定義されています)。

        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"]];

これを修正するにはどうすればよいですか?

4

1 に答える 1

0

sqliteドキュメントから:

挿入にROWIDが指定されていない場合、または指定されたROWIDの値がNULLの場合、適切なROWIDが自動的に作成されます。

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

IDを指定する特別な理由がない場合は、単に省略できます。

于 2012-05-25T17:19:00.283 に答える