React native 如何处理';唯一约束失败';SQLite中的异常

React native 如何处理';唯一约束失败';SQLite中的异常,react-native,sqlite,unique-constraint,React Native,Sqlite,Unique Constraint,我是个新来的本地人 在我的应用程序中,我使用SQLite数据库作为本地数据库(主键是Reference No,这对每个记录都是唯一的)。在某些情况下,服务器会多次返回相同的记录,并希望避免向数据库中添加重复的记录 我想处理“唯一约束失败”异常。我尝试了一些解决方案,但对我无效。那我该怎么处理呢。请帮我解决这个问题 我的代码如下 addNewJobs(jobs: any) { return new Promise((resolve) => { this

我是个新来的本地人

在我的应用程序中,我使用SQLite数据库作为本地数据库(主键是Reference No,这对每个记录都是唯一的)。在某些情况下,服务器会多次返回相同的记录,并希望避免向数据库中添加重复的记录

我想处理“唯一约束失败”异常。我尝试了一些解决方案,但对我无效。那我该怎么处理呢。请帮我解决这个问题

我的代码如下

addNewJobs(jobs: any) {
        return new Promise((resolve) => {
            this.initDB().then((db) => {
                db.transaction((tx) => {
                    tx.executeSql('INSERT INTO LI_New_Retail (' +
                        DBProperties.CONSTANT_TABLE_COLUMN_REFERENCE_NO + ', ' +
                        DBProperties.CONSTANT_TABLE_COLUMN_REQUEST_DETAILS + ', ' +
                        DBProperties.CONSTANT_TABLE_COLUMN_INSPECTION_HISTORY + ', ' +
                        DBProperties.CONSTANT_TABLE_COLUMN_LOCATION_CONFIRMATION + ', ' +
                        DBProperties.CONSTANT_TABLE_COLUMN_DATE_SCHEDULED + ', ' +
                        DBProperties.CONSTANT_TABLE_COLUMN_CHECKLIST + ', ' +
                        DBProperties.CONSTANT_TABLE_JSON_RESPONSE + ', ' +
                        DBProperties.CONSTANT_TABLE_COLUMN_UPLOADED_IMAGE_LIST
                        + ') VALUES (?, ?, ?, ?, ?, ?, ?, ?)',
                        [jobs.referenceNumber, JSON.stringify(jobs.requestDetailsDTO),
                        JSON.stringify(jobs.inspectionHistoriesDtos), null,
                        JSON.stringify(jobs.dateScheduled),
                        JSON.stringify(jobs.pharmacyLocationChecklistsDTOS),
                        JSON.stringify(jobs), null])

                        .then(([tx, results]) => {
                            resolve(results);
                        })
                        
                }).then((result) => {
                    this.closeDatabase(db);
                }).catch((error) => {
                    console.log("An error occured during data insert to db -- " + JSON.stringify(error));
                    this.closeDatabase(db);
                });
            }).catch((error) => {
                console.log("adding new inspection jobs function error occured !!! -- " + error);
            });
        });
    }

在表名中插入或忽略
是一种方法

如果记录与现有记录不重复,则MySQL将插入 一切照旧。如果记录是重复的,则忽略关键字 告诉MySQL以静默方式放弃它,而不生成错误


您是否尝试过将
插入或忽略到表名中,而不是将
插入到…
?@HendEl Sahli,不,我以前从未使用过它。你能解释一下吗?如果你有唯一的限制。。。它要么添加新记录,要么忽略整个命令,如果有重复的记录。。。