我在mediastore上执行了一个查询,试图返回特定atist的专辑数量。
该查询如下所示:
public String doQuery(String artistName) {
String[] proj = new String[] { MediaStore.Audio.Artists._ID,
MediaStore.Audio.Artists.NUMBER_OF_ALBUMS,
MediaStore.Audio.Artists.ARTIST };
Uri baseUri = MediaStore.Audio.Artists.EXTERNAL_CONTENT_URI;
selection = MediaStore.Audio.Artists.ARTIST + " = " + artistName;
Log.i(TAG, "Selection artistName = " + artistName);
Cursor mCursor = getContentResolver().query(baseUri, proj, selection,
null, null);
mCursor.moveToFirst();
return
mCursor.getString(mCursor
.getColumnIndex(MediaStore.Audio.Artists.NUMBER_OF_ALBUMS));
}传入artistName,并且所选内容应将光标缩小到该艺术家。我得到了以下异常:
09-19 23:13:14.855: E/AndroidRuntime(17911): android.database.sqlite.SQLiteException: near "Stone": syntax error (code 1): , while compiling: SELECT _id, number_of_albums, artist FROM artist_info WHERE (artist = Nine Inch Nails)有人能告诉我我哪里做错了吗?
发布于 2012-09-19 21:29:02
执行以下操作:
selection = MediaStore.Audio.Artists.ARTIST + " =? ";
String[] selectionArgs = new String[]{artistName};
Cursor mCursor = getContentResolver().query(baseUri, proj, selection,
selectionArgs, null);这样,即使artistName包含单引号,它也可以执行而不会出错。
https://stackoverflow.com/questions/12495624
复制相似问题