Android SQLite自动增量

时间:2011-12-08 17:10:43

标签: android sqlite

我目前有一个名为User的表,它有一个id列,创建为

'INTEGER PRIMARY KEY'

假设我创建了两个用户,因此表的id为1和2

如果删除第二个用户并创建第三个id为2,我需要将其设为3

因此,Android似乎正在选择下一个可用ID,如何将其更改为更像序列号?

此致

4 个答案:

答案 0 :(得分:92)

将其设为INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL。这是the docs所说的:

  

如果列的类型为INTEGER PRIMARY KEY AUTOINCREMENT,则...选择ROWID   对于新行至少比最大的ROWID大一个   曾经存在于同一张桌子里。

     

AUTOINCREMENT关键字实现的行为是巧妙的   与默认行为不同。使用AUTOINCREMENT,行   自动选择的ROWID保证具有ROWID   以前从未在同一个数据库中使用同一个表。而且   自动生成的ROWID保证是单调的   增加。

答案 1 :(得分:11)

SQLite AUTOINCREMENT是一个关键字,用于自动递增表中字段的值。我们可以在创建具有特定列名称的表时使用AUTOINCREMENT关键字自动递增字段值,以自动递增它。

关键字AUTOINCREMENT只能与INTEGER字段一起使用。 语法:

AUTOINCREMENT关键字的基本用法如下:

CREATE TABLE table_name(
   column1 INTEGER AUTOINCREMENT,
   column2 datatype,
   column3 datatype,
   .....
   columnN datatype,
);

例如见下文: 考虑如下创建COMPANY表:

sqlite> CREATE TABLE TB_COMPANY_INFO(
   ID INTEGER PRIMARY KEY   AUTOINCREMENT,
   NAME           TEXT      NOT NULL,
   AGE            INT       NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL
);

现在,将以下记录插入表TB_COMPANY_INFO

INSERT INTO TB_COMPANY_INFO (NAME,AGE,ADDRESS,SALARY)
VALUES ( 'MANOJ KUMAR', 40, 'Meerut,UP,INDIA', 200000.00 );

现在选择记录

SELECT *FROM TB_COMPANY_INFO
    ID      NAME            AGE     ADDRESS             SALARY
    1       Manoj Kumar     40      Meerut,UP,INDIA     200000.00

答案 2 :(得分:0)

如果说的是 ANDROID ,是的,上面的答案是正确的,除了id列的命名。

describe('My Test', function () {
  const dateStub;

  before('', function () {
    dateStub = sinon.stub(Date, 'getTime').returns(143434325325);
  });

  it('should return date with hours ', () => {
    const result = getLastHour();
    expect(dateStub).to.be.called;
  });
});

在Android中,它应该命名为“ rowid”。 使用Cursor,您需要像这样实例化它:

UserWarning: "link/" looks like a URL. Beautiful Soup is not an HTTP client. 
You should probably use an HTTP client like requests to get the 
document behind the URL, and feed that document to Beautiful Soup.
' that document to Beautiful Soup.' % decoded_markup

否则它对我没有用。我不知道为什么。

答案 3 :(得分:0)

在写数据库(即执行)时,请记住使用android,

做 插入TABLE_NAME(param1name,param2name)值(param1,param2)

,无需为自动增量添加占位符。添加记录时,它将自行添加。如果不声明要放入的参数,则将得到错误x预期变量的数量,而您只给出x-1,这是因为您不应该为自动增量列提供任何占位符值