【问题标题】:Ionic3 native SQLite select query with in operator带有 in 运算符的 Ionic3 本机 SQLite 选择查询
【发布时间】:2018-09-11 19:49:24
【问题描述】:

我在我的 ionic-3 应用程序中使用 SQLite 本机插件,当我尝试查询以获取具有一些学生 ID 的学生时,查询不起作用。这给出了空结果。

//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;
});

【问题讨论】:

  • 你是什么意思它'不工作',你收到一个错误,不正确的数据,什么?
  • 还因为您使用的是本机插件 - 您使用的是真实设备或适当的模拟器,对吗?不是离子服务等?

标签: sqlite cordova ionic-framework ionic3 ionic-native


【解决方案1】:

用于创建数据库

   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.log('Executed SQL'))
                    .catch(e => console.log(e));
                })
                .catch(e => console.log(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.log("INSERTED: " + JSON.stringify(data));
       }, (error) => {
       console.log("ERROR: " + JSON.stringify(error.err));
    });
  })
 .catch(e => console.log(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);

【讨论】:

  • 谢谢,这部分工作正常,但是根据子句中的值数组选择结果不起作用。
【解决方案2】:

这在 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)

【讨论】:

    猜你喜欢
    • 2017-10-08
    • 1970-01-01
    • 2017-04-21
    • 2011-08-14
    • 2016-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多