嗨,我在本地資料庫中添加了資料陣列作為從后端獲取的行,現在我從后端獲取了包含現有資料的新資料,我正在嘗試將此資料添加到本地資料庫,但正在創建重復項
"CREATE TABLE IF NOT EXISTS "
this.GENRES_TABLE_NAME
" "
"( "
"_id integer primary key autoincrement, "
"genre_id integer, "
"genre_name text, "
" )";
我在本地資料庫中有這些資料
{
"_id":1,
"genre_id": 43,
"genre_name": "*Born 1920 - 1925"
},
{
"_id":2
"genre_id": 44,
"genre_name": "1920's and Before"
},
{
"_id":3
"genre_id": 45,
"genre_name": "1930's"
}
這是我的新資料
{
"genre_id": 43,
"genre_name": "*Born 1920 - 1925"
},
{
"genre_id": 44,
"genre_name": "1920's and Before"
},
{
"genre_id": 111,
"genre_name": "new collection"
}
我想將genre_id:111記錄添加到本地資料庫,但我的查詢將所有記錄添加到本地資料庫,這是我的查詢
let insertSQL = `INSERT INTO ${this.GENRES_TABLE_NAME} (genre_id
,genre_name) VALUES `;
genres.forEach((genre, index) => {
insertSQL = `(${genre.id},"${genre.name}")`;
if (index < genres.length - 1) {
insertSQL = ",";
}
});
insertSQL = ";";
db.executeSql(insertSQL)
請幫我
uj5u.com熱心網友回復:
由于genre_id已經有一個UNIQUE約束,您應該能夠使用 SQLite 特定的語法INSERT OR IGNORE INTO <table>,從而消除可能是唯一約束違反錯誤的情況。
另外,我注意到您沒有使用引數化查詢,這是不安全的。為了保護您的應用免受SQL 注入攻擊,請在任何地方使用引數化查詢。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/498266.html
