2017-05-09 29 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