Как подключить уже готовую и заполненную базу данных sqlite в android?

Пользователь

от cayla , в категории: SQL , 2 года назад

Как подключить уже готовую и заполненную базу данных sqlite в android?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от jett , 2 года назад

@cayla 

Для подключения готовой и заполненной базы данных SQLite в Android необходимо выполнить следующие шаги:

  1. Разместите файл базы данных SQLite в папке /assets вашего проекта Android Studio.
  2. Создайте класс, который будет отвечать за взаимодействие с базой данных. В этом классе нужно создать метод, который скопирует файл базы данных из папки /assets в папку вашего приложения на устройстве. Например:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
public class DatabaseHelper extends SQLiteOpenHelper {

    private static String DB_NAME = "mydatabase.sqlite";
    private static String DB_PATH = "";
    private SQLiteDatabase mDataBase;
    private final Context mContext;

    public DatabaseHelper(Context context) {
        super(context, DB_NAME, null, 1);
        DB_PATH = context.getApplicationInfo().dataDir + "/databases/";
        this.mContext = context;
    }

    public void createDataBase() throws IOException {

        boolean mDataBaseExist = checkDataBase();
        if (!mDataBaseExist) {
            this.getReadableDatabase();
            this.close();
            try {
                copyDataBase();
            } catch (IOException e) {
                throw new Error("Error copying database");
            }
        }
    }

    private boolean checkDataBase() {
        File dbFile = new File(DB_PATH + DB_NAME);
        return dbFile.exists();
    }

    private void copyDataBase() throws IOException {
        InputStream mInput = mContext.getAssets().open(DB_NAME);
        String outFileName = DB_PATH + DB_NAME;
        OutputStream mOutput = new FileOutputStream(outFileName);
        byte[] mBuffer = new byte[1024];
        int mLength;
        while ((mLength = mInput.read(mBuffer)) > 0) {
            mOutput.write(mBuffer, 0, mLength);
        }
        mOutput.flush();
        mOutput.close();
        mInput.close();
    }

    public boolean openDataBase() throws SQLException {
        String mPath = DB_PATH + DB_NAME;
        mDataBase = SQLiteDatabase.openDatabase(mPath, null, SQLiteDatabase.CREATE_IF_NECESSARY);
        return mDataBase != null;
    }

    @Override
    public synchronized void close() {
        if (mDataBase != null)
            mDataBase.close();
        super.close();
    }
    
    // Добавьте здесь методы для работы с базой данных
}


  1. Создайте объект класса DatabaseHelper внутри вашей активности или фрагмента и вызовите метод createDataBase(). Этот метод скопирует файл базы данных из папки /assets в папку вашего приложения на устройстве. Например:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
public class MainActivity extends AppCompatActivity {

    private DatabaseHelper mDBHelper;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mDBHelper = new DatabaseHelper(this);

        try {
            mDBHelper.createDataBase();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    
    // Добавьте здесь обработчики событий и другой код для вашей активности
}


  1. Теперь можно получить доступ к базе данных, вызвав метод openDataBase() объекта DatabaseHelper. Например:
1
mDBHelper.openDataBase();

Пользователь

от francisco.friesen , 6 месяцев назад

@cayla 

После выполнения этих шагов вы сможете подключить и использовать уже готовую и заполненную базу данных SQLite в вашем приложении Android. Теперь вы можете выполнять запросы к базе данных, добавлять, удалять или обновлять записи, работать с таблицами и т. д., используя объект DatabaseHelper. Не забудьте закрывать базу данных после работы с ней вызовом метода mDataBase.close().