Модераторы: javastic
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Доступ к базе данных с компа 
:(
    Опции темы
Abbath1349
Дата 1.4.2013, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 214
Регистрация: 16.6.2010

Репутация: нет
Всего: нет



Подскажите можно ли написать программу для компа(на Qt, или NET),чтобы при подключении телефона получать доступ к базе данных приложения(своего) и редактировать его? и если да какие для этого есть библиотеки и нужно ли писать ContentProvider для базы данных в приложении?
PM MAIL   Вверх
Metalex
Дата 2.4.2013, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 635
Регистрация: 22.10.2008
Где: Украина-ZPсity

Репутация: нет
Всего: нет



Я думаю, это возможно, но проще брать базу с тела, редактировать ее, потом снова загружать.

Вот скрипт, который должен работать (но у меня не завелся), который забирает базу приложения на комп.

Код

adb -d shell 'run-as com.example.package cat /data/data/com.example.package/databases/dbname.db > /sdcard/dbname.db'
adb pull /sdcard/dbname.db "D:\dbname.db"



--------------------
Don't let the system get you down.
PM WWW ICQ Skype   Вверх
Felan
Дата 17.4.2013, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 284
Регистрация: 2.8.2007
Где: Самара

Репутация: нет
Всего: 7



Вменяемые приложения не хранят свою бд в открытом доступе. Так что так не получится получить базу с утройства. Только с эмулятора. Для того, что бы скопировать базу с телефона надо сначала ее скопировать в публичное место, а потом уже можно таким скриптом ее получить, ну или в ручную через DDMS.

Для того, что бы скопировать базу из приватного хранилища в публичное можно использовать примерно такокй код:

Код

    public static void fileCopy(@NotNull File source, @NotNull File destination) throws IOException {
        FileChannel inChannel = new FileInputStream(source).getChannel();
        FileChannel outChannel = new FileOutputStream(destination).getChannel();

        try{
            inChannel.transferTo(0, inChannel.size(), outChannel);
        }
        finally {
            if (inChannel != null)
                inChannel.close();
            if(outChannel != null)
                outChannel.close();
        }
    }

    @SuppressWarnings("ResultOfMethodCallIgnored")
    public static void saveBackupDatabaseFile(@NotNull Context context, @NotNull String dataBaseName, @NotNull String backupName) {
        File dbFile = context.getDatabasePath(dataBaseName);
        File exportDir = new File(Environment.getExternalStorageDirectory(), dataBaseBackupFolder);
        if (!exportDir.exists()){
            exportDir.mkdirs();
        }

        File backup = new File(exportDir, backupName);

        try {
            backup.createNewFile();
            fileCopy(dbFile, backup);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }


ЗЫЖ Если нужен постоянный активный доступ для того, что бы работать с этой базой, то придется делать не только провайдет, но и скорее всего собственный сервер.

Это сообщение отредактировал(а) Felan - 17.4.2013, 16:28


--------------------
// Любая сложная система - это темный лес. Каждый в этом лесу протаптывает свои тропинки, по ним и бегает. Лишь изредка, сходя с них, мы находим много интересного, а порою и страшного.
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Android | Следующая тема »


 




[ Время генерации скрипта: 0.0641 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.