В моем приложении есть база данных, созданная sqlite. Я хочу скопировать базу данных в папку для скачивания. Я использовал другой способ, но не работал в реальном устройстве (скажем, запрет доступа к каталогу), может быть, он хочет рутированный телефон. Пожалуйста, помогите, я хочу дать доступ, чтобы пользователь мог получить базу данных из папки загрузки.
Обратите внимание, что я использую последнюю версию Android Studio.
В приведенном ниже классе DatabaseHelper. В методе exportDB () я хочу реализовать это.
package com.tarikul.sqlitedatabase1;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Environment;
import android.widget.Toast;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.channels.FileChannel;
public class DatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "Students.db";
private static final String TABLE_NAME = "student_details";
private static final String ID = "_id";
private static final String NAME = "Name";
private static final String AGE = "Age";
private static final String GENDER = "Gender";
private static final int VERSION_NUMBER = 1;
private static final String CREATE_TABLE = "CREATE TABLE "+TABLE_NAME+"("+ID+" INTEGER PRIMARY KEY AUTOINCREMENT, "+NAME+" VARCHAR(155), "+AGE+" INTEGER, "+GENDER+" VARCHAR(15));";
private static final String DROP_TABLE = "DROP TABLE IF EXISTS " + TABLE_NAME;
private static final String SELECT_ALL_DATA = "SELECT * FROM " + TABLE_NAME;
private Context context;
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, VERSION_NUMBER);
this.context=context;
}
@Override
public void onCreate(SQLiteDatabase db) {
try {
db.execSQL(CREATE_TABLE);
Toast.makeText(context,"OnCreate is called.",Toast.LENGTH_SHORT).show();
}catch (Exception e){
Toast.makeText(context,"Exception: "+e,Toast.LENGTH_SHORT).show();
}
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
try {
Toast.makeText(context,"onUpgrade is called.",Toast.LENGTH_SHORT).show();
db.execSQL(DROP_TABLE);
onCreate(db);
}catch (Exception e){
Toast.makeText(context,"Exception: "+e,Toast.LENGTH_SHORT).show();
}
}
public long insert(String name, String age, String gender)
{
SQLiteDatabase sqLiteDatabase = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(NAME,name);
contentValues.put(AGE,age);
contentValues.put(GENDER,gender);
long rowId = sqLiteDatabase.insert(TABLE_NAME,null,contentValues);
return rowId;
}
public Cursor displayAllData(){
SQLiteDatabase sqLiteDatabase = this.getWritableDatabase();
Cursor cursor = sqLiteDatabase.rawQuery(SELECT_ALL_DATA,null);
return cursor;
}
public boolean updateData(String id, String name, String age, String gender)
{
SQLiteDatabase sqLiteDatabase = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(ID,id);
contentValues.put(NAME,name);
contentValues.put(AGE,age);
contentValues.put(GENDER,gender);
sqLiteDatabase.update(TABLE_NAME, contentValues,ID + " = ?",new String[]{id});
return true;
}
public int deleteData(String id)
{
SQLiteDatabase sqLiteDatabase = this.getWritableDatabase();
return sqLiteDatabase.delete(TABLE_NAME,ID + " = ?", new String[]{id});
}
public void exportDB()
{
}
}