【问题标题】:How to auto increment in sqlite database iOS objective c如何在sqlite数据库iOS目标c中自动递增
【发布时间】:2016-01-25 03:27:13
【问题描述】:

[在 sqlite manager 中创建表]我正在处理 iOS 目标 c。在我的项目中,我将 sqlite manager 用于数据库目的。我声明 id 在 sqlite manager 的表创建时自动增加,但每当我执行我的那个时间 id 上的代码不会自动增加。 所以决定编写自动增量的代码。 我编写了 id auto increment 的代码,但它不能正常工作。

谁能建议我哪个代码更适合自动增量。[这是我在 sqlite 管理器中创建的数据库表[用于 id 自动增量的代码][在 sqlite 管理器中创建表]code for id creation

Code for table creation in sqlite manager

【问题讨论】:

  • 在这里添加一些代码..
  • 在 Firefox 中打开你的 sqlite 数据库并仔细检查该字段是否自动递增
  • 顺便说一句,我不鼓励使用stringWithFormat 在数据库中插入值。您应该使用? 占位符(不带任何引号),然后使用sqlite3_bind_xxx 函数将值绑定到这些占位符。如果这工作量太大,请考虑使用像 FMDB 这样的库,它会为您完成这项工作。

标签: ios


【解决方案1】:

您应该将字段定义为INTEGER PRIMARY KEY AUTOINCREMENT,但是当您插入数据时,请不要在插入的值中包含此字段。不要试图自己增加这个。让数据库为您执行此操作。如果在插入记录后,您想知道分配的值是什么,请调用sqlite3_last_insert_rowid

【讨论】:

  • 目前没有,如果我提供主键值,那么它会显示 sql 语法错误
  • @Chandni-Systematix - 我建议发布我们自己的问题,因为如果您提供一个值,它应该仍然有效。我认为我们需要查看 SQL、错误代码和sqlite3_errmsg()。但是试图在 cmets 中诊断它是不切实际的。只要问你自己的问题。
【解决方案2】:

您可能希望将id 声明为主键。请看这个answer

【讨论】:

  • 我将 id 声明为 _id` INTEGER PRIMARY KEY AUTOINCREMENT 但不是自动递增。请同时查看我的截图
  • 您可以尝试在没有关键字 AUTOINCREMENT 的情况下声明您的 _id 吗? (_id INTEGER PRIMARY KEY)。请发布您的完整代码以声明/创建您的表格
  • 我已经发送了我的问题的屏幕截图。请检查一次。在我的问题代码中,用于创建 id 和创建蓝色表格的问题代码中,请单击该图像显示,所以检查一次。
  • 所以通过_id INTEGER PRIMARY KEY 声明它不起作用?你在里面插入数字吗?
  • 无效。数字已插入但未自动递增。
【解决方案3】:
  1. 创建表查询

    CREATE TABLE COMPANY(
       ID INTEGER PRIMARY KEY   AUTOINCREMENT,
       NAME           TEXT      NOT NULL,
       AGE            INT       NOT NULL,
       ADDRESS        CHAR(50),
       SALARY         REAL
    );
    
  2. 要插入的查询

    INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY) VALUES ( 'Paul', 32, 'California', 20000.00 );
    INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY) VALUES ('Allen', 25, 'Texas', 15000.00 );
    
  3. 结果

    ID          NAME        AGE         ADDRESS     SALARY
    ----------  ----------  ----------  ----------  ----------
    1           Paul        32          California  20000.0
    2           Allen       25          Texas       15000.0
    

【讨论】:

  • 请注意,插入查询列 id 值中给出的增量值不会基于自动增量而增加
猜你喜欢
  • 2013-12-03
  • 2011-03-08
  • 2012-05-28
  • 1970-01-01
  • 1970-01-01
  • 2017-12-30
  • 2012-04-19
  • 1970-01-01
  • 2013-11-26
相关资源
最近更新 更多