gpt4 book ai didi

Android - 从 SQLite 数据库获取结果集,然后用于 OpenCSV

转载 作者:IT王子 更新时间:2023-10-29 06:29:47 25 4
gpt4 key购买 nike

美好的一天。我有一个使用包含五个数据库表的数据库的应用程序,我想要做的是能够将其中两个表导出为 CSV 文件并通过电子邮件发送。在进行初步研究后,我看到了 OpenCSV Library是将 SQLite 表导出为 CSV 的流行选择。然而,经过进一步的研究,我发现导出是通过将 ResultSet 对象提供给 writeAll(ResultSet rSet, Boolean includeHeaders) 函数来实现的,但是,它并不是明确的显示了如何获取 ResultSet。我试图寻找有关如何在 DatabaseHelper 类中使用 ResultSet 的指南,但一无所获。

谁能教我如何在我的 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;
}


}

我感觉它类似于执行查询,但是,我应该获取一个 ResultSet 并将该 ResultSet 返回到我的 Activity,而不是获取 Cursor。

我也对将 sqlite 数据库导出到 csv 文件的其他方法持开放态度。

最佳答案

我现在处于完全相同的位置。

我认为 java.sql.ResultSetandroid.database.sqlite.SQLiteDatabase 不兼容。

  • ConnectionStatementResultSet 来自 Java(包 java.sql)。

  • SQLiteDatabase 来自 Android 并且是不同的。它返回的不是 ResultSet,而是 Cursor

您可以尝试不使用 Android 类,而是使用 Java 类来访问数据库,但我不确定这是否是个好主意。

我使用 CursorCSVWriter#writeNext(String[]) 代替。 This is my implementation .

关于Android - 从 SQLite 数据库获取结果集,然后用于 OpenCSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23148076/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com