2013-06-24 59 views
0

數據庫查詢返回null在我的Android應用程序試圖通過將一個參數傳遞給where子句從數據庫獲取值,但它總是返回null ...並且在logcat中沒有錯誤.. 。 我似乎無法弄清楚這裏有什麼問題?數據庫查詢返回null即使它有值

請幫忙!

我在哪裏callimg數據庫函數的代碼:

appmname=mDbHelper.getMname(appName); 
      applname=mDbHelper.getLname(appmname); 
      customername=appName+appmname+applname; 
       // app_formno=mDbHelper.getAppno(settings.getString("ap_First_Name", "")); 

      s=mDbHelper.fetchDetails(appName); 
      s=mDbHelper.getMainData(customername); 

這些返回數據庫值的功能:

public String getMname(String fname) 
{ 
    String mname = null; 
    try 
    { 
     String sql="select app_mname from lnt_data_table where app_fname = '"+fname+"'"; 
     Cursor c=mDb.rawQuery(sql, null); 
     if (c != null) { 
      c.moveToFirst(); 

      while (!c.isAfterLast()) { 

        mname=c.getString(0); 
      } 
      c.close(); 
     } 

    } 
    catch(Exception e) 
    { 
     e.printStackTrace(); 
    } 
    return mname; 
} 

public String getLname(String mname) 
{ 
    String lname = null; 
    try 
    { 
     String sql="select app_lname from lnt_data_table where app_mname= '"+mname+"'"; 
     Cursor c=mDb.rawQuery(sql, null); 
     if (c != null) { 
      c.moveToLast(); 

      while (c.isBeforeFirst() != true) { 

        lname=c.getString(0); 
      } 
      c.close(); 
     } 

    } 
    catch(Exception e) 
    { 
     e.printStackTrace(); 
    } 
    return lname; 
} 

如果我給這個敬酒消息

Toast.makeText(ListViewDetails.this,appName+ appmname +applname, Toast.LENGTH_LONG).show(); 

它當數據庫中有值時返回null!

+0

嘗試加入'SQLiteQueryBuilder MDB =新SQLiteQueryBuilder();'裏面你的方法..並檢查是否有logtraces .. – CRUSADER

+0

按照這個教程它會幫助你http://www.vogella.com/articles/AndroidSQLite/article.html –

回答

1

我認爲在實際從中獲得任何東西之前,您將移動到cursor的末尾。嘗試改變c.moveToLast();c.moveToFirst(),然後在while循環只是改變while (c.isBeforeFirst())while(!c.isAfterLast())

您正在移動光標結束,然後檢查其是否在第一項......這是有點兒不可能的前側的位置。也許就是爲什麼你沒有得到任何東西

+0

我做了必要的更改!看我的編輯!但仍然返回null! – shivani

+0

你確定有'fname'的值嗎?你確實打開了數據庫?只是試圖想到可能導致null的所有事情。 – SeanSWatkins

2

試試這個格式調用光標,並關閉它

if (cursor != null) { 

     if (cursor.moveToFirst()) { 

      do { 
         //your code 

       } 

      while (cursor.moveToNext()); 

     } 

    cursor.close(); 

希望它能幫助:)

+0

這仍然返回空值!:( – shivani

+0

你可以在SQLite中編寫你的查詢,看看你得到了什麼結果? –

+0

好吧,讓我試試 – shivani

相關問題