如何在此SQLite插入语句中获取NULL?

时间:2012-05-25 16:56:16

标签: objective-c sqlite fmdb

我有3个SQLite表。每个都有一个ID作为主键;如果我在向ID插入记录时提供NULL,它将自动递增密钥(至少这是SQLite文档所说的)。我试图将NULL插入到这个insert语句中,但它崩溃了('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"]];

如何解决此问题?

1 个答案:

答案 0 :(得分:0)

来自sqlite docs:

  

如果在插入上没有指定ROWID,或者指定的ROWID的值为NULL,则会自动创建适当的ROWID。

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

如果您没有具体的理由指定ID,您可以简单地将其删除!