0

我有 3 个 SQLite 表。每个都有一个 ID 作为主键;如果我在向 ID 插入记录时提供 NULL,它将自动增加密钥(至少 SQLite 文档是这么说的)。我试图将 NULL 放入此插入语句,但它崩溃('NSInvalidArgumentException',原因:' * -[NSPlaceholderString initWithFormat:locale:arguments:]: nil argument')。这是语句的片段(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 回答