2017-05-09 30 views
0

sqllite-我有问题,在Android的Ionic3与选择

this.platform.ready().then(() => { 
      this.sqlite.create({ 
      name: 'temp.db', 
      location: 'default' 
      }).then((db: SQLiteObject) => { 

      console.log('Querying for temp user '+user.userName+'Password '+user.password); 

      console.log('User queried'+user.userName); 

      db.executeSql("SELECT * FROM USER where USER_NAME = ? and USER_PWD=?", [user.userName,password]).then(
      response => { 
       let records=''; 
       for (let i = 0; i < response.rows.length; i++) { 
       records = records+ JSON.stringify(response.rows.item(i))+'\n'; //Prints row correctly 
       } 
      this._util.presentAlert('Records selected like from- USR-',records); 
      }) 
     .catch(
      e => this._util.presentAlert('Fail- Select like from- USER-Temp DBUSER',e)); 

      db.executeSql("SELECT * FROM USER where USER_NAME = ? and USER_PWD=? ", [user.userName,password ]).then(
       response => { 
       if (response && response.rows && response.rows.length > 0) { 


        for (let i = 0; i < response.rows.length; i++) { 
          let access = { 
           firstName :response.rows.item[i].FIRST_NAME, //This is undefined. 
           lastName :response.rows.item[i].LAST_NAME, 
           userName:response.rows.item[i].USER_NAME, 
           userId:response.rows.item[i].USER_ID 
           } 

          observer.next(access); 

         } 

         observer.complete(); 

       } else { 
        let access = {status:'Fail',msg:'Bad credentials for Temp DB login'}; 
       console.log('No record for the user from- USER'+user.userName); 
        observer.next(access); 
        observer.complete();    

       } 
       }) 
       .catch(
       e => { 
       console.log('Fail- Select query gone wrong * from- USER FOR Temp DB LOGIN' + e); 
       let access = {status:'Fail',msg:'Bad credentials for Temp DB login'}; 
       observer.next(access); 
       observer.complete(); 

       }); 

问题用科尔多瓦从SQL精简版数据库查询记录,这是一个正确打印记录

JSON.stringify(response.rows.item(i)) 
O/P 
{'USER_ID':1,'FIRST_NAME':'Temp','LAST_NAME':'User','USER_NAME':'TEMPUSER','USER_PWD':'TEMPPWD'} 

下面是投掷undefined error

firstName :response.rows.item[i].FIRST_NAME 
Fail- Select query gone wrong * from- USER FOR Temp DB LOGIN TypeError: Cannot read property 'FIRST_NAME' of undefined 

有人有这个问题吗?我不知道为什么我无法像JSON那样获取它。 请告知

+0

你可以尝试用'user.password'尽管在您的查询密码? – ericminio

+0

实际上没有密码被加密。所以我正在使用一个新的变量。但是如果你看到这里,当我提醒下面的声明它工作正常,并给出了JSON。记录+ JSON.stringify(response.rows.item(i))+'\ n'; 。问题只有当我使用:response.rows.item [i] .FIRST_NAME – jslearner07

+0

console.log('用户在DB中找到 - >响应项目类型'+ typeof(response.rows.item [i]));给出的类型为undefined。 – jslearner07

回答

0

这就是我解决问题的方法。 Incase如果它可以帮助任何人

1.Removed cordova sqllite plugin 
2.Reinstalled Ionic sqllite plugin -latest 
3.Took npm update of cordova 
4.Performed cordova prepare android 
5.Executed ionic build android 
6.Corrected the typo from the queries response.rows.item(i).FIRST_NAME. It should be curly brace only. Sadly IDE doesnt trigger any error