Я использую собственный плагин SQLite в своем приложении ionic-3, когда я пытаюсь запросить студентов с некоторыми студентами, запрос не работает. Это дает пустые результаты.
//studentIds array
let studentIds = [1,2,4,5];
//Query part
this.database.executeSql("Select * from student where id in (?)", [studentIds]).then(data => {
let students = [];
for(let i=0; i < data.rows.length; i++) {
students.push({id: data.rows.item[i].id, name: data.rows.item[i].name});
}
return students;
});
также, поскольку вы используете собственный плагин - вы используете настоящее устройство или правильный эмулятор, верно? не ионные служат и т. д.?





Для создания базы данных
this._platform.ready().then(() => {
this.sqlite = new SQLite();
this.sqlite.create({name: "mymain.db", location: "default"}).then((db: SQLiteObject) => {
db.executeSql('CREATE TABLE IF NOT EXISTS mydata (allvalues TEXT)', {})
.then(() => console.info('Executed SQL'))
.catch(e => console.info(e));
})
.catch(e => console.info(e));
});
}
Для добавления данных в sqltie
public saveTablicaToSqlite(DataArray){
this.sqlite.create({
name: 'mymain.db',
location: 'default'
})
.then((db: SQLiteObject) => {
db.executeSql("INSERT INTO mydata (allvalues) VALUES (?)", [DataArray]).then((data) => {
console.info("INSERTED: " + JSON.stringify(data));
}, (error) => {
console.info("ERROR: " + JSON.stringify(error.err));
});
})
.catch(e => console.info(e));
}
Для получения данных
fetchdata(datavalue,splashScreen){
console.info('fetch',datavalue);
return new Promise((resolve, reject) => {
this.sqlite.create({
name: 'mymain.db',
location: 'default'
})
.then((db: SQLiteObject) => {
db.executeSql("SELECT * FROM mydata", []).then((data) => {
if (data.rows.length > 0) {
for(let i = 0; i < 1; i++) {
var obj = JSON.parse(data.rows.item(i).allvalues);
console.info(obj);
Спасибо, эта часть работает, но выбор результатов на основе массива значений в предложении не работает.
Это работает для меня в Ionic 3:
//studentIds array
let studentIds = [1,2,4,5];
//Query part
this.database.executeSql(`select * from student where id in (?)`, [studentIds]).then(data => {
let students = [];
for(let i=0; i < data.rows.length; i++)
students.push({id: data.rows.item(i).id, name: data.rows.item(i).name});
return students;
});
Проблема в том, что [] на data.rows.item[i], вы должны использовать (), как этот data.rows.item(i)
Что значит «не работает», вы получаете ошибку, неверные данные, что?