如何从sqlite select查询中获取数组值?

时间:2016-12-20 11:04:44

标签: java android arrays sqlite

我有一个简单的sqlite函数,它从我的表中返回所有内容。目前我得到单个值我想得到一个值数组。这是我试图实现的代码: -

   public void getItemDetails()
    {
        SQLiteDatabase db = this.getReadableDatabase();
        Cursor c = db.rawQuery("SELECT * FROM "+ORDER_TABLE, null);
        if(c.moveToFirst()){
            do{

                //assing values
                int orderId = c.getInt(0);
                String serviceName = c.getString(1);
                String categoryName = c.getString(2);
                String itemName = c.getString(3);
                int itemRate = c.getInt(4);
                int itemQty = c.getInt(5);
                int itemTot = c.getInt(6);
                //Do something Here with values


                Log.d("Order Table ",orderId+" , "+serviceName+" , "+categoryName+" , "+itemName+" , "+itemRate+" , "+itemQty+" , "+itemTot);

            }while(c.moveToNext());
        }
        c.close();
        db.close();

    }

我必须对现有代码进行哪些更改才能获取orderId,serviceName,categoryName,itemName,itemRate,itemQty和itemTot数组。

感谢任何帮助或建议。谢谢。

4 个答案:

答案 0 :(得分:2)

请按照以下步骤操作。

  1. 首先创建一个bean(getter setter类),如..

    public class ItemDetails{
    
    int orderId;
    // declare variable for all data here and also getter setter method(like below for orderid)
    
    // Empty constructor
    public ItemDetails(){
    
    }
    
    public int get_orderId() {
    return orderId;
    }
    
    public void set_orderId(int orderId ) {
    this.orderId = orderId;
    }
    }
    
  2. 现在使用这种方法..

    // Getting All data
    public List<ItemDetails> getAllItemDetails() {
    List<ItemDetails> listAll = new ArrayList<ItemDetails>();
    // Select All Query
    String selectQuery = "SELECT  * FROM " + ORDER_TABLE;
    
    SQLiteDatabase db = this.getWritableDatabase();
    Cursor cursor = db.rawQuery(selectQuery, null);
    
    // looping through all rows and adding to list
    if (cursor.moveToFirst()) {
        do {
    
            ItemDetails operatorTable = new ItemDetails();
            //here get all data from cursor and set it into setter method like below
           operatorTable.set_orderId(Integer.parseInt(cursor.getString(0)));
            //operatorTable.set_Operator(cursor.getString(1));
    
            operatorList.add(operatorTable);
        } while (cursor.moveToNext());
    }
    
    // returnlist
    return listAll ;
    

    }

  3. 称这个为mehod ...

    List<ItemDetails > itemList = db.getAllItemDetails();
    
  4. 希望这会对你有所帮助。

答案 1 :(得分:0)

您可以创建可加密对象的数组

Itemdetail i1=new Itemdetail();

然后创建属性及其setter getter方法 在getItemDetails函数中初始化该对象,在对象的setter方法中设置值,并从函数返回对象

你可以这样做

public Itemdetail getItemDetails(){

Itemdetail i1=new Itemdetail();
i1.setServiceName("Your value");
...
.

 return i1;
}

答案 2 :(得分:0)

您可以使用ArrayList: -

List<String> list=new ArrayList<>();
list.add(String.valueOf(orderId));
list.add(serviceName);
list.add(categoryName);
list.add(itemName);
list.add(String.valueOf(itemRate));
list.add(String.valueOf(itemQty));
list.add(String.valueOf(itemTot));

而不是void在getItemDetails()中返回此列表, 您还可以使用模型类来设置列表中的值

答案 3 :(得分:0)

我会更改您从表中访问项目的方式,以使其更清晰。

String serviceName = cursor.getString(aCursor.getColumnIndex("column_name"));

其次,我将每一行都作为对象项

然后@Nainal建议我迭代数据库,填充每个对象并添加到列表中。