2

sqlite データベースを取得しました。特定のデータ列を取得して、文字列配列に格納したいと考えていました。データベース内には 2 つの列があります。同じユーザー名のデータ行が複数あるため、ユーザーの「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);

コメントをお待ちしております。

4

1 に答える 1

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 ステートメントを次のように変更します。

return returnMsg.toArray();
于 2012-12-10T02:35:15.967 に答える