1

曲のIDを取得する関数があります。id はプライマリ フィールドであり、自動インクリメントです。しかし、どういうわけか、この関数を呼び出すたびに、結果が見つからない -1 が返されます。問題への取り組み方に何か問題がありますか?

int getIdForSong(Song song){

        String selectQuery = "SELECT id FROM " + TABLE_SONG + " WHERE " + SONG_TITLE + "= ' " + song.getSongTitle() + "' AND " + ARTIST_NAME + "= ' " + song.getArtistName()+" ' ";
        SQLiteDatabase db = this.getReadableDatabase();
        Cursor cursor = db.rawQuery(selectQuery, null);
        cursor.moveToFirst();
        if(cursor.moveToNext() && cursor != null){
            int id = Integer.parseInt(cursor.getString(0));
            return id;
        }
        else
            return -1;
    }
4

2 に答える 2

3

余分なスペースが表示されます:

' " + song.getArtistName()+" '

したがって、アーティスト名が「Green Day」の場合、「Green Day」になります。

同様に:

"= ' " + song.getSongTitle() + "'

「Boulevard Of Broken Dreams」は「Boulevard Of Broken Dreams」になります。

于 2012-10-28T07:33:17.607 に答える
0
String selectQuery = "SELECT id FROM " + TABLE_SONG + " WHERE " + SONG_TITLE + "= '" + song.getSongTitle() + "' AND " + ARTIST_NAME + "= '" + song.getArtistName()+"' ";
于 2012-10-28T07:31:37.297 に答える