我有一个简单的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数组。
感谢任何帮助或建议。谢谢。
答案 0 :(得分:2)
请按照以下步骤操作。
首先创建一个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;
}
}
现在使用这种方法..
// 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 ;
}
称这个为mehod ...
List<ItemDetails > itemList = db.getAllItemDetails();
希望这会对你有所帮助。
答案 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建议我迭代数据库,填充每个对象并添加到列表中。