- 使用SQLiteOpenHelper类
SQLiteOpenHelper类是Android中用于管理数据库的一个类,它可以创建数据库、升级数据库以及打开数据库,以下是一个简单的示例,展示如何使用SQLiteOpenHelper类导出数据库数据:

public class DatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "mydatabase.db";
private static final int DATABASE_VERSION = 1;
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
// 创建表
db.execSQL("CREATE TABLE IF NOT EXISTS mytable (id INTEGER PRIMARY KEY, name TEXT)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// 升级表结构
}
public void exportDatabase() {
SQLiteDatabase db = getReadableDatabase();
Cursor cursor = db.query("mytable", null, null, null, null, null, null);
String csvHeader = "id,namen";
String csvContent = "";
if (cursor.moveToFirst()) {
do {
String id = cursor.getString(cursor.getColumnIndex("id"));
String name = cursor.getString(cursor.getColumnIndex("name"));
csvContent += id + "," + name + "n";
} while (cursor.moveToNext());
}
cursor.close();
db.close();
// 将数据写入文件
try {
FileOutputStream fos = openFileOutput("mydatabase.csv", MODE_PRIVATE);
fos.write(csvHeader.getBytes());
fos.write(csvContent.getBytes());
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
- 使用SQLiteDatabase类
如果已经有一个SQLiteOpenHelper类的实例,可以直接使用SQLiteDatabase类来导出数据:
public void exportDatabase(SQLiteDatabase db) {
Cursor cursor = db.query("mytable", null, null, null, null, null, null);
String csvHeader = "id,namen";
String csvContent = "";
if (cursor.moveToFirst()) {
do {
String id = cursor.getString(cursor.getColumnIndex("id"));
String name = cursor.getString(cursor.getColumnIndex("name"));
csvContent += id + "," + name + "n";
} while (cursor.moveToNext());
}
cursor.close();
// 将数据写入文件
try {
FileOutputStream fos = openFileOutput("mydatabase.csv", MODE_PRIVATE);
fos.write(csvHeader.getBytes());
fos.write(csvContent.getBytes());
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
- 使用ContentProvider
如果数据库是通过ContentProvider管理的,可以使用ContentResolver来查询数据,并将结果导出为CSV文件:
public void exportDatabase(Context context) {
ContentResolver contentResolver = context.getContentResolver();
Uri uri = Uri.parse("content://myprovider/mytable");
Cursor cursor = contentResolver.query(uri, null, null, null, null);
String csvHeader = "id,namen";
String csvContent = "";
if (cursor.moveToFirst()) {
do {
String id = cursor.getString(cursor.getColumnIndex("id"));
String name = cursor.getString(cursor.getColumnIndex("name"));
csvContent += id + "," + name + "n";
} while (cursor.moveToNext());
}
cursor.close();
// 将数据写入文件
try {
FileOutputStream fos = openFileOutput("mydatabase.csv", MODE_PRIVATE);
fos.write(csvHeader.getBytes());
fos.write(csvContent.getBytes());
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
FAQs:

问题1:如何将Android数据库中的数据导出为Excel格式?
解答:要将Android数据库中的数据导出为Excel格式,可以使用Apache POI库来创建Excel文件,以下是一个简单的示例:
public void exportDatabaseToExcel(Context context) {
SQLiteDatabase db = context.openOrCreateDatabase("mydatabase.db", MODE_PRIVATE, null);
Cursor cursor = db.rawQuery("SELECT * FROM mytable", null);
// 创建Excel文件
Workbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet("MyTable");
// 写入表头
Row header = sheet.createRow(0);
header.createCell(0).setCellValue("ID");
header.createCell(1).setCellValue("Name");
// 写入数据
int rowNum = 1;
while (cursor.moveToNext()) {
Row row = sheet.createRow(rowNum++);
row.createCell(0).setCellValue(cursor.getString(0));
row.createCell(1).setCellValue(cursor.getString(1));
}
// 保存Excel文件
try {
FileOutputStream outputStream = context.openFileOutput("mydatabase.xlsx", MODE_PRIVATE);
workbook.write(outputStream);
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
cursor.close();
db.close();
}
问题2:如何将Android数据库中的数据导出为PDF格式?

解答:要将Android数据库中的数据导出为PDF格式,可以使用iText库来创建PDF文件,以下是一个简单的示例:
public void exportDatabaseToPDF(Context context) {
SQLiteDatabase db = context.openOrCreateDatabase("mydatabase.db", MODE_PRIVATE, null);
Cursor cursor = db.rawQuery("SELECT * FROM mytable", null);
// 创建PDF文件
Document document = new Document();
PdfWriter.getInstance(document, new FileOutputStream("mydatabase.pdf"));
document.open();
// 写入表头
Paragraph header = new Paragraph("ID, Namen");
document.add(header);
// 写入数据
while (cursor.moveToNext()) {
Paragraph row = new Paragraph(cursor.getString(0) + ", " + cursor.getString(1) + "n");
document.add(row);
}
document.close();
cursor.close();
db.close();
}
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/248882.html