2013-08-08 20 views
5

i Cursor vb , String, Int olsun yöntemi var ama ben bir nesne döndüren bir dinamik yöntem oluşturmak istiyor ve bunu sadece döküm Android İmleç? nesne verileri nasıl okunur?

mycursor.GetObject(index) 

olarak orada birşeyler değil biliyorum. Herhangi bir tür için String,Float,Double,Long,Short, Blob,Int, vb

ve örneğin Float veya Int veya herhangi bir tür için kullanabilir ve kullanabilir miyim?

(Blob) newblob=mycursor.GetString(i_return_BloB); 
(Int) newint=mycursor.GetString(i_return_Int); 
(Float) newfloat=mycursor.GetString(i_return_Float); 
(Double) newdouble=mycursor.GetString(i_return_Double); 
(Long) newlong=mycursor.GetString(i_return_long); 
(Short) newshort=mycursor.GetString(i_return_short); 

işe yarayacağını örnek

için

? , herhangi bir tür için mycursor.GetString() kullanabilir miyim?

cevap

4

get the type of a column ve daha sonra switch deyiminden uygun yöntemi (ve kendiniz için istediğiniz yöntemi oluşturun) çağırabilirsiniz.

sonucu ve sütun değeri null veya sütun tipi olduğunda bu yöntem bir istisna atar olmadığı değil bir dize türü uygulamasıdır: docs belirtmek gibi farklı türleri için

kullanma getString, güvenli değil -defined.

+0

android.database.Cursor getType() benim swich kullanma fikrim yoktu ya da eğer GetType (columnindex) yok – angel

+0

Kullanılabilir değil apilevel> = 11 ... için uygun bir yöntem yok gibi görünüyor daha eski Android'ler, bkz. http://stackoverflow.com/questions/11658239/cursor-gettype-for-api-level-11 – dst

+0

Geçici çözüm: http://stackoverflow.com/a/6145969/2636001 – dst

2

Sen gibi bir şey denemek istiyorum:

DataBaseHelper myDbHelper = new DataBaseHelper(this); 

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

String[] array; 

Cursor c = myDbHelper.query(query); 

int id = c.getColumnIndex("COLUMN_NAME"); 

for(c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) { 
    mArrayList.add(c.getString(id)); 
} 

array = mArrayList.toArray(new String[0]); 


System.out.println(array[0]); 

c.close(); 

myDbHelper.close(); 

Ve sevdiği query() görünmelidir şey: Kendi ihtiyaçlarını karşılamak için SQL kodunu değiştirmek gerekir

public Cursor query(String query){ 

    String selectAll = null; 

    if(query.length() > 1){ 

    selectAll = "SELECT TABLENAME.COLUMNAME FROM TABLENAME WHERE TABLENAME.COLUMNNAME LIKE" + query + ";"; 

    return myDataBase.rawQuery(selectAll, null); 
} 

. Bu durumda, sorguyla eşleşen bir sütunun her değerini alıyorum, ancak SELECT ifadesini değiştirebilirsiniz. Umarım yardımcı olur.

İlgili konular