2013-08-08 15 views
5

私はCursorを知っているがString, Intを得るための方法、など を持っているが、私はオブジェクトを返し、私はそれをキャスト動的メソッドを作成したい Android Cursor?オブジェクトデータの読み込み方法

mycursor.GetObject(index) 

としてそこ代されていません。

またはどのタイプの mycursor.GetString(index)でも使用できますか? String,Float,Double,Long,Short, Blob,Intなど

とし、たとえばFloatまたはIntまたは任意のタイプのものを使用してキャストできますか?

それがうまくいく

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

例えば? どのタイプでもmycursor.GetString()を使用できますか?

答えて

4

get the type of a columnを入力し、switchステートメントから適切なメソッドを呼び出して(自分で求めているメソッドを構築します)。

ドキュメントを指定するように、異なるタイプのgetStringを使用して、安全ではない。

結果と列の値がNULLの場合、このメソッドは例外をスローまたは列型が文字列型であるか否かは実装であります定義される。

+0

android.database.Cursorにswichを使用しているアイデアであるgetType()がありませんが、GetType(columnindex)がありません – angel

+0

apilevel> = 11で利用可能です。古いAndroids、http://stackoverflow.com/questions/11658239/cursor-gettype-for-api-level-11 – dst

+0

回避策:http://stackoverflow.com/a/6145969/2636001を参照してください。 – dst

2

あなたのような何か試してみたい:

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

をそして、あなたのquery()のようなものになります:あなたは、あなたのニーズに合わせてSQLコードを変更する必要が

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

を。この場合、クエリと一致する列のすべての値を取得していますが、SELECTステートメントを変更できます。それが役に立てば幸い。

関連する問題