0

お願いがあります...

コンテンツ リゾルバーのクエリに引数を渡そうとしています。引数が NULL の場合はすべての行を取得するか、逆に引数で指定された特定の値を取得します。

使用するメソッドは次のように宣言します。

    static String allArtists = "";
    ////
      Some code
      ...
      Vector<String> discs = new Vector<String>();

      discs = getDiscs(allArtists);
    ////

    public Vector<String> getDiscs(String artistName){

したがって、作成したクエリは次のとおりです。

Uri discsUri = MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI;

        ContentResolver contRes = getContentResolver();

        String[] queryColumns = {   MediaStore.Audio.Albums._ID,
                                    MediaStore.Audio.Albums.ALBUM,
                                    MediaStore.Audio.Albums.ARTIST };

        String selectionQuery = "? = ?";
        String [] selectionArgs = { MediaStore.Audio.Albums.ARTIST, artistName };
        String sortOrderClause = MediaStore.Audio.Albums.ALBUM + " ASC";

        Cursor queryRes = contRes.query(discsUri, 
                                        queryColumns,
                                        selectionQuery,
                                        selectionArgs,
                                        sortOrderClause
                                         );

このメソッドを再利用可能にするために、artistName を引数として渡します。すべての行を選択したいので、定数 allArtists を渡します。

要点は、定数 allArtists = "" が期待どおりに null 値として機能しないため、このクエリは行を返さないことです。

最終的な問題は次のとおりです。クエリが "" ではなく NULL 値として受け取るように、定数をどのように宣言する必要がありますか?

どうもありがとう。

4

2 に答える 2

0

この方法で選択を行う問題を解決しました。

        String[] queryColumns = {   MediaStore.Audio.Albums._ID,
                                    MediaStore.Audio.Albums.ALBUM,
                                    MediaStore.Audio.Albums.ARTIST };

        String  selectionQuery  = "( nullif('" + artistName + "','') ISNULL )" +
                                  " OR (" + MediaStore.Audio.Albums.ARTIST + " == '" + artistName + "' )";
        String  sortOrderClause = MediaStore.Audio.Albums.ALBUM + " ASC";

        Cursor queryRes = contRes.query(discsUri, 
                                        queryColumns,
                                        selectionQuery,
                                        null,
                                        sortOrderClause);

これが他の誰かに役立つことを願っています。ご挨拶!

于 2011-03-14T00:38:01.207 に答える
0

空の文字列を null に変換する

    String selectionQuery = "? = nullif(?,'''')";
于 2011-03-05T22:51:05.980 に答える