Я создал таблицу и добавление элементов в таблицу следующим образом,SQLiteConstraintException выбрасывают каждый раз при добавлении динамических ДАННЫЕ к столу
`
public void addPendingOrders(PendingOrdersDao pendingOrders) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(KEY_ID, pendingOrders.getId());
values.put(KEY_SHIPMENT_NO, pendingOrders.getSipmentNo());
values.put(KEY_SHIPMENT_REF_NO, pendingOrders.getShipmentRefNo());
values.put(KEY_PRO_INV_NO, pendingOrders.getProformoInvoiceNumber());
values.put(KEY_PRO_INV_DATE, pendingOrders.getProformoInvoiceDate());
values.put(KEY_SHIPMENT_DATE, pendingOrders.getShipmentDate());
values.put(KEY_PT_OF_CONTACT, pendingOrders.getPointOfContact());
values.put(KEY_PRODUCT, pendingOrders.getProduct());
values.put(KEY_QTY, pendingOrders.getQuantity());
values.put(KEY_RATE, pendingOrders.get_rate());
values.put(KEY_AMOUNT, pendingOrders.getAmount());
values.put(KEY_PRODUCT_IMG, pendingOrders.getProductImage());
values.put(KEY_SHIPMENT_STAT, pendingOrders.getShipmentStatus());
// Inserting Row
db.insert(TABLE_PENDINGORDERS, null, values);
db.close(); // Closing database connection
}
Тогда в моем коде, Im, используя следующие код для добавления значений в таблицу
for (PendingOrdersDao cn : allPendingOrders) {
//int _id, String _shipmentNo, String _shipmentRefNo, String _proformoInvoiceNumber, String _proformoInvoiceDate, String _shipmentDate, String _pointOfContact, String _product, String _quantity, String _rate, String _amount, String _productImage, String _shipmentStatus) {
myitems.add(new PendingOrdersDao(cn.getId(), cn.getSipmentNo(), cn.getShipmentRefNo(), cn.getProformoInvoiceNumber(), cn.getProformoInvoiceDate(), cn.getShipmentDate(), cn.getPointOfContact(), cn.getProduct(), cn.getQuantity(), cn.get_rate(), cn.getAmount(), cn.getProductImage(), cn.getShipmentStatus()));
}
Каждый раз, когда вид нажат, то значения будут считаны с помощью залпа и эти значения будут сохранены в базе данных. В первый раз, когда нажимается клика, данные добавляются в базу данных без каких-либо проблем. В следующий раз, если Im щелкнет представление, новые значения получаются снова, но ошибка SQLiteConstraintException бросается, когда новые данные добавляются в таблицу. Я думаю, это потому, что идентификаторы старых значений в таблице и новые значения, которые вставляются в таблицу, одинаковы. Есть ли способы, с помощью которых я могу справиться с этой ошибкой? Как я могу очистить записи в таблице и вставить вновь полученные данные, не получая исключение из SQL-ограничения?
Журнал ошибок
android.database.sqlite.SQLiteConstraintException: Идентификатор столбца не уникальный (код 19) в android.database.sqlite.SQLiteConnection.nativeExecuteForLastInsertedRowId (Родной метод) на андроид. database.sqlite.SQLiteConnection.executeForLastInsertedRowId (SQLiteConnection.java:973) на android.database.sqlite.SQLiteSession.executeForLastInsertedRowId (SQLiteSession.java:788)
Это запрос, который я использую, чтобы создать таблицу
String CREATE_PENDING_ORDERS_TABLE = "CREATE TABLE IF NOT EXISTS " + TABLE_PENDINGORDERS + "("
+ KEY_ID + " INT PRIMARY KEY NOT NULL,"
+ KEY_SHIPMENT_NO + " TEXT NOT NULL,"
+ KEY_SHIPMENT_REF_NO + " TEXT NOT NULL,"
+ KEY_PRO_INV_NO + " TEXT NOT NULL,"
+ KEY_PRO_INV_DATE + " TEXT NOT NULL,"
+ KEY_SHIPMENT_DATE + " TEXT NOT NULL,"
+ KEY_PT_OF_CONTACT + " TEXT NOT NULL,"
+ KEY_PRODUCT + " TEXT NOT NULL,"
+ KEY_QTY + " TEXT NOT NULL,"
+ KEY_RATE + " TEXT NOT NULL,"
+ KEY_AMOUNT + " TEXT NOT NULL,"
+ KEY_PRODUCT_IMG + " TEXT NOT NULL,"
+ KEY_SHIPMENT_STAT + " TEXT NOT NULL"
+ ")";
, пожалуйста, покажите свой стек. – Opiatefuchs
Я разместил журнал ошибок – user1241241
В первый раз значения вставляются правильно, но во второй раз , значения с одинаковым идентификатором вставляются еще раз, потому что я хочу, чтобы мое приложение отображало только что полученные данные. Это вызывает проблему. Как я могу справиться с этим? – user1241241