2012-01-26 9 views
0

私はこの問題をよく理解していませんが、実行中のSELECTクエリに関連付けられているようです。そのクエリを残しておき、関連するロジックブロックがコメントアウトされていると(下に示すように)、コードはうまく動作しますが、私が必要とする値はメモリにはありません。コメントを外すと、この醜い男のような100万のエラーが発生します。AndroidのSQLite Hangup

D/dalvikvm( 556): GC_CONCURRENT freed 410K, 51% free 3172K/6407K, external 716K/1316K, paused 4ms+3ms 

考えられますか?

var SESSION = { 
    i_company: '', 
    s_username: '' 
}; 

btn_signin.addEventListener('click', function(e) { 
    btn_signin.title = 'Validating'; 

    var http = Titanium.Network.createHTTPClient(); 
    http.open('GET', VALIDATE_CREDENTIALS_URL); 
    http.send({ 
     s_username: txt_username.value, 
     s_password: txt_password.value 
    }); 

    http.onerror = function() { 
     alert('Unable to verify your credentials.'); 
    }; 

    http.onload = function() { 
     var response = JSON.parse(this.responseText); 

     if(response.s_status !== 'success') { 
      btn_signin.title = 'Sign In'; 
      alert(response.data); 
      return false; 
     } 

     btn_signin.title = 'Validated'; 

     // Store session 
     var db = Titanium.Database.open('database'); 
     db.execute('DELETE FROM sessions'); 
     db.execute('INSERT INTO sessions (i_company, s_username) VALUES (?, ?)', response.data.i_company, response.data.s_username); 

     btn_signin.title = 'Saving Session'; 

     // var db_rows = db.execute('SELECT i_company, s_username FROM sessions LIMIT 1'); 

     // while(db_rows.isValidRow()) { 
     // SESSION.i_company = db_rows.fieldByName('i_company'); 
     // SESSION.s_username = db_rows.fieldByName('s_username'); 
     // } 
     db_rows.close(); 
     db.close(); 

     btn_signin.title = 'Loading App'; 

     // Focus on entry window 
     tbg_app.open(); 
     wnd_signin.hide(); 
    }; 
}); 

答えて

0

ブロック全体をtry {}とcatch(Throwable e)に入れます。デバッガでブロックをステップバイステップで実行します。例外が発生した行を探します。 catchブロックでeを見てください。プログラミングに関して - あなたはnullであるとdb_rowsをチェックしていません! エラーここにあります。