美好的一天。我有一个应用程序使用包含五个数据库表的数据库,我想要做的是能够将这些表中的两个导出为CSV文件并发送给他们。在进行初步研究后,我看到OpenCSV Library是将SQLite表导出为CSV的流行选择。然而,经过进一步的研究,我发现通过给writeAll(ResultSet rSet, Boolean includeHeaders)
函数提供一个ResultSet
对象可以实现导出,但是没有明确显示如何获得ResultSet。我试图寻找关于如何在DatabaseHelper类中使用ResultSet的指南,但我空了。Android - 从SQLite数据库获取ResultSet,然后用于OpenCSV
任何人都可以教我如何在我的DatabaseHelper类中实现一个函数,它将返回查询结果的ResultSet?这里是我DatabaseHelper类:
public class OrderListDBAdapter {
private DatabaseHelper mDBHelper;
private SQLiteDatabase mDB;
private final Context context;
private static class DatabaseHelper extends SQLiteOpenHelper {
DatabaseHelper(Context context) {
super(context, "itemList.db", null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
public OrderListDBAdapter(Context context){
this.context = context;
}
public OrderListDBAdapter open() throws SQLException{
this.mDBHelper = new DatabaseHelper(this.context);
//this.mDB = this.mDBHelper.getWritableDatabase(DBAdapter.key);
this.mDB = this.mDBHelper.getWritableDatabase();
return this;
}
public void close(){
this.mDBHelper.close();
}
//TODO - crud queries
public long insertOrder(OrderListClass order){
Log.d("Angelo", "Hi, insert Order entered");
ContentValues values = new ContentValues();
values.put("orderDate", order.getOrderDate());
values.put("customer", order.getCustomer());
values.put("agent", order.getAgent());
values.put("itemName", order.getItemName());
values.put("price", order.getPrice());
values.put("discount", order.getDiscount());
values.put("quantity", order.getQuantity());
values.put("requestedDiscount", order.getRequestedDiscount());
return this.mDB.insert("OrderList", null, values);
}
public boolean deleteOrder(String productname) {
Log.d("Angelo", "Hi, delete Order entered");
return mDB.delete("OrderList", "itemName =" + productname, null) > 0;
}
public int updateOrder(OrderListClass order) {
Log.d("Angelo", "Hi, update Order entered");
ContentValues values = new ContentValues();
values.put("orderDate", order.getOrderDate());
values.put("customer", order.getCustomer());
values.put("agent", order.getAgent());
values.put("itemName", order.getItemName());
values.put("price", order.getPrice());
values.put("discount", order.getDiscount());
values.put("quantity", order.getQuantity());
values.put("requestedDiscount", order.getRequestedDiscount());
// updating row
return mDB.update("OrderList", values, "itemName" + " = ?", new String[] { order.getItemName() });
}
public ArrayList<OrderSummaryListViewItem> getAllOrders(String date, String customerName){
ArrayList<OrderSummaryListViewItem> orders = new ArrayList<OrderSummaryListViewItem>();
String query = "SELECT itemName, price, discount, quantity, requestedDiscount FROM OrderList WHERE orderDate = '"
+ date + "' AND customer = '" + customerName + "'";
Cursor cursor = mDB.rawQuery(query, null);
if (cursor.moveToFirst()) {
do {
String quantity = cursor.getString(cursor.getColumnIndex("quantity"));
String itemName = cursor.getString(cursor.getColumnIndex("itemName"));
String discount = cursor.getString(cursor.getColumnIndex("discount"));
String price = cursor.getString(cursor.getColumnIndex("price"));
String discRequest = cursor.getString(cursor.getColumnIndex("requestedDiscount"));
OrderSummaryListViewItem entry = new OrderSummaryListViewItem(quantity, itemName, discount, price, discRequest);
orders.add(entry);
} while (cursor.moveToNext());
}
cursor.close();
return orders;
}
}
我有一种感觉,它类似于执行查询,但是,而不是得到一个游标,我应该得到一个结果和结果集返回到我的活动。
我也可以选择将sqlite数据库导出到csv文件。