I'm trying to pass a dynamic array to a executeSql. I'm passing the SQL to the IN as array.
let lor_text_Array = [];
if (lor_text == "TEST 1, 2, 3") {
lor_text_Array = ["TEST 1", "TEST 2", "TEST 3"];
}
else {
lor_text_Array.push("TEST 4")
lor_text_Array.push("TEST 5")
}
let sql_query = 'SELECT * FROM SUBMISSION WHERE REV IN (' + lor_text_Array + ')ORDER BY ID DESC';
app.db.transaction(function (tx) { tx.executeSql(sql_query, [], loadItemsSYNCED, app.onError);});
however an error occured while executing sql Error object Object
Assuming that your string values do not contain embedded single quotes, you use map
and join
to generate the IN
list, as follows:
let lor_in_list = lor_text_Array.map(function (a) { return "'" + a + "'"; }).join(",");
let sql_query = 'SELECT * FROM SUBMISSION WHERE REV IN (' + lor_in_list + ')ORDER BY ID DESC';
To handle possible embedded single quotes:
let lor_in_list = lor_text_Array.map(function (a) {
return "'" + a.replace("'", "''") + "'";
}).join(",");