报错信息
{
"code": -1404,
"message": "android.database.sqlite.SQLiteConstraintException: UNIQUE constraint failed: inventory_list.inventProperNum (code 1555 SQLITE_CONSTRAINT_PRIMARYKEY),http://ask.dcloud.net.cn/article/282"
}
我建表时把inventProperNum设为主键,但我这个字段的数据是重复的,而主键是唯一的不能重复
因为第一条数据逐渐已经存在且数据重复所以就报错不能继续往下插入了,所以我查表时只出现了一条数据,一开始我还以为是for循环出了问题,后来用map也一样,最后仔细看表才发现我把重复数据的字段设置为了主键
把主键改为其他字段然后重新插入就成功了。
插入多条数据
function intoInventoryTable(self, data, clear) {
// 1.清空表中的数据
if (clear) {
console.log(clear)
clearTable(self, 'inventory_list')
}
console.log(data)
// 2.添加数据
data.map(item => {
let datas = `'${item.inventProperNum}','${item.properId}','${item.propertyName}','${item.propertySort}','${item.date}','${item.addWay}','${item.specType}','${item.useDepartment}','${item.leaveWhere}','${item.counts}','${item.checkCounts}','${item.checkResult}'`;
let condition = "'inventProperNum', 'properId', 'propertyName', 'propertySort', 'date', 'addWay', 'specType', 'useDepartment', 'leaveWhere', 'counts', 'checkCounts', 'checkResult'";
let dbtable = 'inventory_list'
let sqlCode = `REPLACE INTO ${dbtable} (${condition}) VALUES (${datas})`
plus.sqlite.executeSql({
name: 'PDASystem',
sql: sqlCode,
success(e) {
console.log(e)
plus.sqlite.selectSql({
name: 'PDASystem', // 数据库名称
sql: `select * from 'inventory_list'`,
success(res) {
console.log(res)
},
fail(e) {
console.log(e,'error')
}
})
},
fail(e) {
console.log(e,'error')
}
})
})
}