在Android中,我们可以通过以下步骤将数据库保存到SD卡中:
- 将SD卡挂载到设备上,并检查是否已经授权读写权限。
- 构建数据库帮助类,包括数据库名和版本号。
- 在帮助类中创建表格。
- 创建一个数据库对象,在该对象中添加表格。
- 调用getExternalStorageDirectory()方法,该方法将返回SD卡的基础目录。
- 使用FileOutputStream打开指定的文件。
- 将数据库对象写入文件中。
- 最后,关闭文件,并在需要时将SD卡卸载。
以下是一个示例,展示如何保存数据库文件到SD卡中:
public class DatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = “mydb”;
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 users(_id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER);");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS users;");
onCreate(db);
}
public void exportDatabase() throws IOException {
File appDir = new File(Environment.getExternalStorageDirectory(), "MyAppDir");
if (!appDir.exists()){
appDir.mkdir();
}
File outputFile = new File(appDir, "mydb.sqlite");
if (!outputFile.exists()) {
outputFile.createNewFile();
}
InputStream input = new FileInputStream(getReadableDatabase().getPath());
OutputStream output = new FileOutputStream(outputFile);
byte[] buffer = new byte[1024];
int length;
while ((length = input.read(buffer))>0){
output.write(buffer, 0, length);
}
output.flush();
output.close();
input.close();
}
}
在实例化我们的DatabaseHelper类后,我们可以调用其中的exportDatabase()方法来将数据库保存到SD卡中。这将创建一个名为“mydb.sqlite”的文件,其中包含我们的数据库。我们还可以在需要时使用importDatabase()方法来将数据库恢复到应用程序中。
首先,在AndroidManifest.xml文件中添加SD卡访问权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
接着,在创建数据库的时候指定数据库保存路径:
private static String DATABASE_NAME = "mydb.db";
private static String DATABASE_PATH = Environment.getExternalStorageDirectory() + File.separator + "myapp" + File.separator + "database" + File.separator;
...
File dir = new File(DATABASE_PATH);
if (!dir.exists()) {
dir.mkdirs();
}
String path = DATABASE_PATH + DATABASE_NAME;
SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(path, null);
其中,Environment.getExternalStorageDirectory()
返回SD卡根目录路径,File.separator
表示路径分隔符,例如在Unix系统下是“/”,在Windows系统下是“”。在上面的代码中,将数据库保存在了“/sdcard/myapp/database/mydb.db”的位置。注意,由于SD卡可拔插且有可能被卸载,因此在使用数据库之前需要先检查SD卡是否可用。
发布者:luotuoemo,转转请注明出处:https://www.jintuiyun.com/155682.html