我是android开发的新手。
我将相册列表存储在包含以下列的表格中:albumid,albumname。
歌曲表包含以下列:songid,song_title,tracksong_id,其中tracksong_id是引用albumid的外键。
我对歌曲表的创建表查询是:
创建表专辑(id integer primary key autoincrement,album_name text)
创建表歌曲(song_id整数主键自动增量,song_name文本不为null,song_title文本不为null,tracksong_id整数,tracksong_id整数,FOREIGN KEY(tracksong_id)REFERENCES专辑(album_id))
获取所有歌曲详情
public AlbumDTO getSOngById(long id)
{
AlbumDTO occasionDTO = null;
光标c = db.query(DATABASE_TABLE_SONG,new String [] {KEY_SONG_NAME,KEY_SONG_TITEL,TRACKSONGID},TRACKSONGID + “=” + ID,NULL,NULL,NULL,NULL);
如果(c.moveToNext())
{
occasionDTO=new AlbumDTO();
//occasionDTO.song_id=c.getLong(c.getColumnIndex(KEY_SONG_ID));
occasionDTO.song_name=c.getString(c.getColumnIndex(KEY_SONG_NAME)).trim();
occasionDTO.song_title=c.getString(c.getColumnIndex(KEY_SONG_TITEL)).trim();
occasionDTO.tracksong_id=c.getLong(c.getColumnIndex(TRACKSONGID));
}
接近();
返回场合DTO;
}
如何从两个表中获取所有数据?一张专辑可以包含很多歌曲。
感谢您的支持
答案 0 :(得分:1)
好的,这就是你想要的:
public static final String TABLE_SONG_JOIN_ALBUM = "song LEFT JOIN album ON sone. tracksong_id = album.id";
public static final String[] PROJECTION = new String[] {
"song.song_name",
"album.album_name"
// maybe you want more field here
};
public AlbumDTO getSOngById(long id) {
SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
qb.setTables(TABLE_SONG_JOIN_ALBUM);
String selection = "song.id = "+id;
SQLiteDatabase db = dbHelper.getReadableDatabase();
Cursor c = qb.query(db, PROJECTION, selection, null, null, null, sortOrder, null);
AlbumDTO occasionDTO=null;
if(c.moveToNext()) {
occasionDTO=new AlbumDTO();
occasionDTO.song_id=c.getLong(c.getColumnIndex(KEY_SONG_ID));
occasionDTO.song_name=c.getString(c.getColumnIndex(KEY_SONG_NAME)).trim();
occasionDTO.song_title=c.getString(c.getColumnIndex(KEY_SONG_TITEL)).trim();
occasionDTO.tracksong_id=c.getLong(c.getColumnIndex(TRACKSONGID));
}
db.close();
return occasionDTO;
}
答案 1 :(得分:0)
如果我们想从两个表中选择一个列,那么以下查询是有用的
“从table1 a1,table2 a2中选择a1.col1,a2.col1;”
这里a1和a2是别名