Форум программистов, компьютерный форум CyberForum.ru

Загрузка базы данных с SD карты - Android

Войти
Регистрация
Восстановить пароль
 
_bio
 Аватар для _bio
0 / 0 / 0
Регистрация: 07.09.2011
Сообщений: 25
25.05.2016, 09:31     Загрузка базы данных с SD карты #1
Ребят, подскажите как реализовать загрузку готовой базы данных с расширение .bd в приложение с SD карты?
Я так понимаю загрузка происходит в assets, и потом уже происходит считывание ее?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Frozik6k
 Аватар для Frozik6k
12 / 12 / 7
Регистрация: 04.04.2016
Сообщений: 50
25.05.2016, 09:46     Загрузка базы данных с SD карты #2
Java
1
mDBHelper = new DBHelper(mContext, DB_FULL_NAME, null, DB_VERSION);
В DB_FULL_NAME можешь указать полный путь к базе данных на SD карте, и она откроется.
_bio
 Аватар для _bio
0 / 0 / 0
Регистрация: 07.09.2011
Сообщений: 25
25.05.2016, 11:53  [ТС]     Загрузка базы данных с SD карты #3
Задумка следующая, на Sd карте будет несколько BD, захожу в приложение жму кнопку, и выбираю на карте .bd файл, после чего его подгрузил, если надо выбрать другой файл следовательно, можно выбрать также его на Sd карте.
Реализовать через OpenFileDialog? Или есть еще какие варианты?
Frozik6k
 Аватар для Frozik6k
12 / 12 / 7
Регистрация: 04.04.2016
Сообщений: 50
25.05.2016, 15:48     Загрузка базы данных с SD карты #4
Примерно вот так:
Java
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
    private void showBackupDialog(){
        String title = getResources().getString(R.string.title);
        ArrayList<String> list = new ArrayList<>();
        list = getListDBfiles();
        if (list != null) {
            ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                    android.R.layout.select_dialog_singlechoice, list);
            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.setTitle(title)
                    .setSingleChoiceItems(adapter, -1, dialogClickListener)
                    .setPositiveButton(R.string.ok, dialogClickListener);
            AlertDialog alert = builder.create();
            alert.show();
        } else Toast.makeText(this, R.string.no_filesDB, Toast.LENGTH_LONG).show();
    }
 
    DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialogInterface, int i) {
            ListView lv = ((AlertDialog) dialogInterface).getListView();
            if (i == Dialog.BUTTON_POSITIVE){
                Log.d(LOG_TAG, lv.getChildAt(lv.getCheckedItemPosition()).toString());
                TextView tv = (TextView) lv.getChildAt(lv.getCheckedItemPosition());
                Log.d(LOG_TAG, "Выбранная база данных " + tv.getText().toString());
                loadDBfiles(tv.getText().toString());
                Log.d(LOG_TAG, "Загрузка базы данных прошла успешно");
            }
        }
    };
_bio
 Аватар для _bio
0 / 0 / 0
Регистрация: 07.09.2011
Сообщений: 25
11.07.2016, 11:25  [ТС]     Загрузка базы данных с SD карты #5
Ребят помогите с реализацией задумки((( что то не могу разобраться(

Java
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase;
import android.content.Context;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.FileOutputStream;
import java.io.File;
import java.sql.SQLException;
 
public class DatabaseHelper extends SQLiteOpenHelper {
 
    private static String DB_PATH = null;
    private static String DB_NAME = "Rostov1.db";
    private static final int SCHEMA = 1; // версия базы данных
    static final String TABLE = "LIST";
 
    public static final String COLUMN_ID = "_id";
    public static final String COLUMN_NAME = "site_name";
    public static final String COLUMN_YEAR = "number_nri";
    public SQLiteDatabase database;
    private Context myContext;
 
    public DatabaseHelper(Context context) {
        super(context, DB_NAME, null, SCHEMA);
        this.myContext=context;
        this.DB_PATH = "/data/data/" + context.getPackageName() + "/" + "databases/";
    }
 
    @Override
    public void onCreate(SQLiteDatabase db) {
    }
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion,  int newVersion) {
 
    }
 
    public void create_db(){
        InputStream myInput = null;
        OutputStream myOutput = null;
        try {
            File file = new File(DB_PATH + DB_NAME);
            if (!file.exists()) {
                this.getReadableDatabase();
                //получаем локальную бд как поток
                myInput = myContext.getAssets().open(DB_NAME);
                // Путь к новой бд
                String outFileName = DB_PATH + DB_NAME;
 
                // Открываем пустую бд
                myOutput = new FileOutputStream(outFileName);
 
                // побайтово копируем данные
                byte[] buffer = new byte[1024];
                int length;
                while ((length = myInput.read(buffer)) > 0) {
                    myOutput.write(buffer, 0, length);
                }
 
                myOutput.flush();
                myOutput.close();
                myInput.close();
            }
        }
        catch(IOException ex){
 
        }
    }
 
    public void open() throws SQLException {
        String path = DB_PATH + DB_NAME;
        database = SQLiteDatabase.openDatabase(path, null,
                SQLiteDatabase.OPEN_READWRITE);
 
    }
 
    @Override
    public synchronized void close() {
        if (database != null) {
            database.close();
        }
        super.close();
    }
}
Этот код который сейчас, копирование базы данных из ресурса assets.
КАК ЕГО ПЕРЕДЕЛАТЬ ЧТОБЫ БАЗА ДАННЫХ ЧИТАЛАСЬ ИЗ SD карты

Добавлено через 2 минуты
Т.е сейчас база данных Rostov1.db лежит допустим на SD карте в папке Download, как ее прочитать от туда? Просто указать путь?
_bio
 Аватар для _bio
0 / 0 / 0
Регистрация: 07.09.2011
Сообщений: 25
13.07.2016, 11:21  [ТС]     Загрузка базы данных с SD карты #6
Готов рассмотреть некоторое вознаграждения, люди ну пожалуйста=)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.07.2016, 12:58     Загрузка базы данных с SD карты
Еще ссылки по теме:

Android Чтение данных из базы
Android Инициализация базы данных
Android Обновление Базы данных
Создание базы данных Android
Android Загрузка данных с удалённого сервера

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
OlegJV
 Аватар для OlegJV
101 / 101 / 29
Регистрация: 13.03.2016
Сообщений: 455
13.07.2016, 12:58     Загрузка базы данных с SD карты #7
Java
1
2
3
4
5
6
7
8
9
10
        File source = new File(EXT_DIR.getAbsolutePath() + "/" + path);
        InputStream is = null;
        if (source.exists()) {
            try {
                is = new FileInputStream(source);
            }
            catch (FileNotFoundException e) {
                return null;
            }
        }
Где EXT_DIR = Environment.getExternalStorageDirectory();

Добавлено через 1 минуту
Готов рассмотреть некоторое вознаграждения
Так бы сразу и сказал ))
Yandex
Объявления
13.07.2016, 12:58     Загрузка базы данных с SD карты
Ответ Создать тему
Опции темы

Текущее время: 20:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru