SQLite同时查询两行并将数据存储在一个字符串中



假设我有一个SQLite表,如下所示:

public static final String DataBaseName = "test1.db";
    public static final String DataTableName = "jobsTable";
    public static final String ColID = "ID";
    public static final String ColPlace = "placeName";
    public static final String ColPosition = "position";
    public static final String ColStartingTime = "startingTime";
    public static final String ColHours = "hours";
    public static final String ColAddress = "address";
    public static final String ColPhoneNumber = "phoneNumber";

我已经知道如何为一行编写查询并将值存储在ArrayList中。Bellow代码获取placeName列的所有成员,并将它们存储在arraylist中。例如

"placename1","placeName2","placeName3","placeName4",...

代码:

public ArrayList<String> getAllPlacesNames() {
        SQLiteDatabase db = this.getWritableDatabase();
        Cursor result = db.rawQuery("select placeName FROM " + DataTableName,null);
        ArrayList<String> companyNames = new ArrayList<String>();
        while(result.moveToNext()) {
            String places = result.getString(result.getColumnIndex("placeName"));
            companyNames.add(places);
        }
        return companyNames;
    }

我正在尝试写一个类似上面的方法,它从两列(PlaceNameposition)中获取值,并将它们存储为:

"placeName1/position1","placeName2/position2","placeName3/position3","placeName4/position4",...

如何做到这一点?感谢

public ArrayList<String> getAllCompanyPositionsAndNamesAndPhone() {
        SQLiteDatabase db = this.getWritableDatabase();
        Cursor result = db.rawQuery("select placeName, position, startingTime FROM " + DataTableName,null);
        ArrayList<String> companyPositions = new ArrayList<String>();
        while(result.moveToNext()) {
            String position = result.getString(result.getColumnIndex("position"));
            String places = result.getString(result.getColumnIndex("placeName"));
            String phoneNum = result.getString(result.getColumnIndex("startingTime"));
            String merged = places + "/" + position + "n" + "Starts on: " + phoneNum;
            companyPositions.add(merged);
        }
        return companyPositions;

i建议使用Hashmap保存键/值数据,这是我的解决方案。

public ArrayList<String> getAllPlacesNames() {
SQLiteDatabase mydb = this.getWritableDatabase();
Cursor result = mydb.rawQuery("select placeName, position FROM " + DataTableName,null);
HashMap<String, Integer> data= new HashMap<String, String>();
while(result.moveToNext()) {

map.put(result.getString(result.getColumnIndex("placeName")), result.getString(result.getColumnIndex("position")));
}

H@ppy c0de

最新更新