2017-05-09 4 views
0

Ich habe Problem mit der Datensätze aus SQL Lite DB in androidIonic3 mit sqllite- auf ausgewählten

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(); 

       }); 

das Problem mit cordova Abfrage wird dies druckt die Datensätze korrekt

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

Nachfolgend finden werfen undefined Fehler

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 

Hat jemand dieses Problem? Ich bin nicht sicher, warum ich es nicht wie JSON abrufen kann. Bitte beraten Sie

+0

Können Sie es erneut mit 'user.password' trotz' password' in Ihren Abfragen versuchen? – ericminio

+0

Nein, tatsächlich ist das Passwort verschlüsselt. Also ich benutze eine neue Variable. Aber wenn Sie hier sehen, wenn ich unten Anweisung warnt, funktioniert es gut und gibt den JSON. Datensätze + JSON.stringify (response.rows.item (i)) + '\ n'; . Problem ist nur, wenn ich folgendes benutze: response.rows.item [i] .FIRST_NAME – jslearner07

+0

console.log ('Benutzer gefunden in DB -> Antwort-Elementtyp' + typeof (response.rows.item [i])); gibt den Typ als undefiniert an. – jslearner07

Antwort

0

So habe ich das Problem gelöst. Incase, wenn es jemandem hilft

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