Java Sqlite数据库:Id在android中未自动递增
我已经在我的应用程序中创建了一个本地数据库。我正在使用SQLite数据库进行同样的操作。我使用了“id”作为自动递增列,但问题是“id”不是自动递增的。它总是显示0。我什么都试过了,但都没有成功。请帮忙 代码: 向表中插入数据Java Sqlite数据库:Id在android中未自动递增,java,android,sqlite,android-sqlite,auto-increment,Java,Android,Sqlite,Android Sqlite,Auto Increment,我已经在我的应用程序中创建了一个本地数据库。我正在使用SQLite数据库进行同样的操作。我使用了“id”作为自动递增列,但问题是“id”不是自动递增的。它总是显示0。我什么都试过了,但都没有成功。请帮忙 代码: 向表中插入数据 ModelInventory modelInventory = new ModelInventory(); modelInventory.setItemName(etItemName.getText().toString()); modelInventory.setIte
ModelInventory modelInventory = new ModelInventory();
modelInventory.setItemName(etItemName.getText().toString());
modelInventory.setItemAmount(Float.parseFloat(etAmount.getText().toString()));
modelInventory.setExpiryDate(etExpiryDate.getText().toString());
modelInventory.setRipeDate(etRipeDate.getText().toString());
modelInventory.setLocketQty(0);
dbHelper.addInventory(modelInventory);
数据库代码:
public void addInventory(ModelInventory modelInventory) {
SQLiteDatabase sqLiteDatabase = this.getWritableDatabase();
ContentValues newValues = new ContentValues();
newValues.put(KEY_ITEM_ID, modelInventory.getItemId());
newValues.put(KEY_ITEM_NAME, modelInventory.getItemName());
newValues.put(KEY_ITEM_AMOUNT, modelInventory.getItemAmount());
newValues.put(KEY_RIPE_DATE, modelInventory.getRipeDate().toString());
newValues.put(KEY_EXPIRY_DATE, modelInventory.getExpiryDate().toString());
newValues.put(KEY_IS_LOCKED_ITEM, modelInventory.getLockedItem());
newValues.put(KEY_QTY_LOCKED, modelInventory.getLocketQty());
sqLiteDatabase.insert(TABLE_INVENTORY, null, newValues);
sqLiteDatabase.close();
}
正如SqlLite文档中提到的那样,无需在SqlLite中声明自动增量 声明为整数主键的列将自动递增 更新
newValues.put(KEY_ITEM_ID, modelInventory.getItemId());
这里modelnentory.getItemId()
返回0(我假设您在modelnentory类中将ItemId声明为整数),因此您需要传递空值,如
代码的第一个问题是,在创建表时,使用3个变量作为列的名称,如:
KEY\u-ING\u-ID
、KEY\u-ING\u-NAME
和KEY\u-ING\u-AMOUNT
在向表中插入数据时,使用以下列名:KEY\u ITEM\u ID
,KEY\u ITEM\u NAME
,KEY\u ITEM\u AMOUNT
,KEY\u成熟日期
,KEY\u到期日期
,KEY\u已锁定项
和KEY\u数量
那么,如何通过为7列提供可能具有不同名称的值,将数据插入到一个包含3列的表中呢 第二个问题是,如果希望列的行为类似于
自动递增
,则在插入新行时必须不为其赋值。系统将提供该值。
因此,删除这一行:
newValues.put(KEY_ITEM_ID, modelInventory.getItemId());
如何插入数据请将该代码粘贴到dbhelper.addInventory(modelInventory);此方法的邮政编码。实际将数据插入SQLLite的位置可能需要一些时间并阅读以下内容:
newValues.put(KEY_ITEM_ID,null);
newValues.put(KEY_ITEM_ID, modelInventory.getItemId());