2012-12-10 89 views
2

我得到了一個sqlite數據庫,我想要檢索特定數據列並將其存儲到字符串數組中。數據庫內有兩列。將有多行數據具有相同的用戶名,我想要檢索用戶的「ContentPath」並將其存儲到字符串數組中。但我不知道如何檢索特定的列數據...檢索數據的特定列並將其存儲在字符串數組中

public String[] get_contentByEmailID(String emailid){ 
    String[] returnMsg = null; 
    helper = this.getReadableDatabase(); 

    Cursor c = helper.rawQuery("SELECT tableid, emailid, contentpath" + 
      " from w_content where emailid='"+emailid"' ", null); 



    int contentpathColumn = c.getColumnIndex("contentpath"); 


    if (c.moveToFirst()) { 
     do { 
      returnMsg = new String[2]; 

      String contentpath = c.getString(contentpathColumn); 

      returnMsg[0] = emailid_sync; 

      returnMsg[1] = contentpath; 


     } while (c.moveToNext()); 
    } 
    if (c != null && !c.isClosed()) { 
     c.close(); 
    } 
    if (helper!=null){ 
     helper.close(); 
    }; 
    return returnMsg; 
} 

當我調用這個函數來檢索數據。它帶有emailid和contentpath。

String values[] = helper.get_contentByEmailID(SettingConstant.EMAIL); 

任何意見將不勝感激。

回答

1

您將數組填入emailid和contentpath的原因是,因爲您總是在每一行上重置returnMsg並將其填入此值。由於會有不同的行數,因此通常建議您使用ArrayList,而不是構建靜態長度數組。

爲了解決這個問題,更改:

String[] returnMsg = null; 

到:

ArrayList<String> returnMsg = new ArrayList<String>(); 

,然後在你的do{},做這樣的事情:

do { 
    String contentpath = c.getString(contentpathColumn); 
    returnMsg.add(contentpath); 
} while (c.moveToNext()); 

最後,改變你的回報聲明:

return returnMsg.toArray(); 
+0

謝謝!有效。這是一個很好的解決方案。 –

+0

我還有一個問題。最後,我的函數變成了public Object [] get_content(String emailid)。 Object []與普通數組有什麼不同? –

+0

'Object []'表示它是一個Object數組。 '[]'意味着數組。所以,String []表示一個String數組等等。請閱讀此處瞭解更多信息:http://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html | Object是Java中所有對象的父代。 – ariefbayu

相關問題