Форум программистов, компьютерный форум, киберфорум
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
ArmenT
0 / 0 / 0
Регистрация: 18.09.2016
Сообщений: 44
#1

Не происходит BackUp DataBase SQLite - Программирование Android

02.10.2016, 12:15. Просмотров 225. Ответов 13
Метки нет (Все метки)

При попытке BackUp-ировать базу даных это не происходит ошибок не выдает просто не условие:

if (currentDB.exists())

вот сама процедура

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
    private void ClickbtnBackUpDB(){
        try {
            //Create BackUp file
            File sd = Environment.getExternalStorageDirectory();
            File data = Environment.getDataDirectory();
            SimpleDateFormat LDF = new SimpleDateFormat("dd-MM-yyyy");
            DIR_SD = tvadd3.getText().toString();
            FILENAME = DIR_SD + "BackUp_" + LDF.format(new Date(System.currentTimeMillis())) + ".db";
 
            if (sd.canWrite()) {
                String currentDBPath = inFileName;
                String backupDBPath = FILENAME;
 
                File currentDB = new File(currentDBPath);
                File backupDB = new File(sd, backupDBPath);
 
                Log.d("backupDB path", "" + backupDB.getAbsolutePath());
 
                if (currentDB.exists()) {
                    FileChannel src = new FileInputStream(currentDB).getChannel();
                    FileChannel dst = new FileOutputStream(backupDB).getChannel();
                    dst.transferFrom(src, 0, src.size());
                    src.close();
                    dst.close();
                    Toast.makeText(getApplicationContext(), "Backup is successful", Toast.LENGTH_SHORT).show();
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.10.2016, 12:15
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не происходит BackUp DataBase SQLite (Программирование Android):

SQLite DataBase - почему подчеркивает DataBase db: пишет (DataBase cannot be resolved to a type) - Программирование Android
Здравствуйте! помогите понять почему подчеркивает DataBase db; пишет (DataBase cannot be resolved to a type), чем это можно исправить ...

Не происходит запись в таблицу SQLite - Basic4Android
Я пытаюсь создать для своего приложения страницу регистрации/авторизации. В базе данных дополнительно создаю таблицу для пользователей. На...

BACKUP DATABASE ORACLE - Oracle
Как сделать Бэкап не всей БД, а только одной схемы(пользователя)?

Backup database SQLserver2000 - SQL Server
Каким образом можно сделать backup базы данных, чтобы баковский файл именовался текущей датой и временем. Спасибо

Backup database Oracle - Oracle
Помоги пожалуйста восстановить базу! Я так понимаю, что нужно устанавливать какой то компонент, т.к. когда я делаю Backup он выдает connect...

Wp-Database Backup - HTTP 500 - WordPress
Всем привет. Недавно перестал работать плагин wp-Database Backup: нажимаю в его настройках " Create New Database Backup" и меня просто...

13
ArmenT
0 / 0 / 0
Регистрация: 18.09.2016
Сообщений: 44
02.10.2016, 12:22  [ТС] #2
вот скрин на котором видно что все значения вроде как правильно присвоены
0
Миниатюры
Не происходит BackUp DataBase SQLite  
fraley
106 / 106 / 40
Регистрация: 24.05.2015
Сообщений: 322
02.10.2016, 12:48 #3
Первый же вопрос, в манифесте прописано?
XML
1
 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
0
ArmenT
0 / 0 / 0
Регистрация: 18.09.2016
Сообщений: 44
02.10.2016, 12:50  [ТС] #4
да прописано вот весь манифест

XML
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
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="ge.com2gami.facebook.lasarewhinv">
 
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
 
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".LogonActivity"
            android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
 
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".ChoiceActivity"
            android:label="@string/title_activity_choice" />
        <activity
            android:name=".ConfigActivity"
            android:label="@string/title_activity_config" />
        <activity
            android:name=".UserListActivity"
            android:label="@string/title_activity_user_list" />
        <activity
            android:name=".AEUserActivity"
            android:label="@string/title_activity_aeuser" />
        <activity
            android:name=".ZonaListActivity"
            android:label="@string/title_activity_zona_list" />
        <activity
            android:name=".PostListActivity"
            android:label="@string/title_activity_post_list" />
        <activity
            android:name=".AEZonaActivity"
            android:label="@string/title_activity_aezona" />
        <activity
            android:name=".AEPostActivity"
            android:label="@string/title_activity_aepost" />
        <activity
            android:name=".ArchiveInventActivity"
            android:label="@string/title_activity_archive_invent" />
        <activity
            android:name=".CurrentInventActivity"
            android:label="@string/title_activity_current_invent" />
        <activity
            android:name=".AEInvoiceActivity"
            android:label="@string/title_activity_aeinvoice" />
        <activity
            android:name=".InventDetailsActivity"
            android:label="@string/title_activity_invent_details" />
        <activity
            android:name=".FileManager"
            android:label="@string/title_activity_file_manager" />
        <activity
            android:name=".open_dir"
            android:label="@string/title_activity_open_dir" />
        <activity
            android:name=".RestoreActivity"
            android:label="Restore" >
        </activity>
 
    </application>
 
</manifest>
0
fraley
106 / 106 / 40
Регистрация: 24.05.2015
Сообщений: 322
02.10.2016, 13:26 #5
String currentDBPath = inFileName начинается судя по картинке с /data/data/
Попробуйте убрать первое слово data.
Или еще проще так.
Java
1
String currentDBPath = "/data/" + getPackageName() + "/databases/" + ИМЯ_ВАШЕЙ_БАЗЫ_ДАННЫХ;
0
ArmenT
0 / 0 / 0
Регистрация: 18.09.2016
Сообщений: 44
02.10.2016, 13:42  [ТС] #6
Цитата Сообщение от fraley Посмотреть сообщение
String currentDBPath = inFileName начинается судя по картинке с /data/data/
база вроде всегда находилась по адресу /data/data/

я попробую конечно но сомневаюсь что поможет
я посмотрел база находится по адресу "/data/data/ge.com2gami.facebook.lasarewhinv/databases/warehouseinvent.db"
я пробовал даже тупо присваивать это значение но все равно не помогает
0
Pablito
2525 / 2004 / 624
Регистрация: 12.05.2014
Сообщений: 7,030
Завершенные тесты: 1
02.10.2016, 13:52 #7
мне не понятно откуда уверенность что база там и лежит и называется именно так?
из скриншота это не очевидно
0
ArmenT
0 / 0 / 0
Регистрация: 18.09.2016
Сообщений: 44
02.10.2016, 14:01  [ТС] #8
я даже и вот это попробовал "//data//data//ge.com2gami.facebook.lasarewhinv//databases//warehouseinvent.db";

Добавлено через 4 минуты
Цитата Сообщение от Паблито Посмотреть сообщение
мне не понятно откуда уверенность что база там и лежит и называется именно так?
из скриншота это не очевидно
так во первых я сам её создал
кусок который за её создание отвечает

Java
1
2
3
    public dbclass(Context context) {
        super(context, "warehouseinvent", null, 1);
    }
а остольной путь он по умолчанию как бы формируется !!!
0
Pablito
2525 / 2004 / 624
Регистрация: 12.05.2014
Сообщений: 7,030
Завершенные тесты: 1
02.10.2016, 14:06 #9
Цитата Сообщение от ArmenT Посмотреть сообщение
кусок который за её создание отвечает
этот кусок ни за что не отвечает, это просто какие-то три строки кода, которые вообще ничего не означают, если вырваны из контекста
Цитата Сообщение от ArmenT Посмотреть сообщение
а остольной путь он по умолчанию как бы формируется !!!
остАльной путь может и формируется, но полной картины нет
0
ArmenT
0 / 0 / 0
Регистрация: 18.09.2016
Сообщений: 44
02.10.2016, 14:09  [ТС] #10
я искал пример в котором был бы метод или функция котора сама возвращает адрес и имя базы но не нашел может кто подскажет! и действительно я что то не то делаю и не осознаю этого
потому как другой причины для возникновения этого бага нету только одно система не находит фал баз данных
0
Pablito
2525 / 2004 / 624
Регистрация: 12.05.2014
Сообщений: 7,030
Завершенные тесты: 1
02.10.2016, 14:25 #11
короче смотри внимательно на свой скриншот - там в половине переменных имя базы указано varehouse, а у остальных warehouse - разберись с именами

и путь к базе можно брать прямо с объекта базы db.getPath()
0
ArmenT
0 / 0 / 0
Регистрация: 18.09.2016
Сообщений: 44
02.10.2016, 14:55  [ТС] #12
я посмотрел
Цитата Сообщение от Паблито Посмотреть сообщение
varehouse
ни где нет это просто на скрине буква "W" так плохо отражается если можно по подробней объясни как мне написать метод db.getPath(). я тут переделал место создания базы

вот посмотри что я сделал!

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class dbclass extends SQLiteOpenHelper {
 
    final String LOG_TAG = "myLogs";
    Cursor c = null;
    String selectQuery;
    private SQLiteDatabase sqlDb;
    private SQLiteDatabase sqlDb2;
 
    private static final String DATABASE_NAME = "warehouseinvent.db";
    private static final int DATABASE_VERSION = 1;
    public String databasePath = "";
 
    public dbclass(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
        databasePath = context.getDatabasePath("warehouseinvent.db").getPath();
    }
Мне в этом классе нужно добавить оверлоад метод getPath() который будет возвращать значение databasePath ? я правильно понял?
0
Pablito
02.10.2016, 15:04
  #13

Не по теме:

тяжелый случай, я сливаюсь с темы...зря вмешался

0
ArmenT
0 / 0 / 0
Регистрация: 18.09.2016
Сообщений: 44
02.10.2016, 15:33  [ТС] #14
Паблито, это мое первое андроид приложение я еще не совсем все правильно понимаю я реально не понял как мне этот гет написать

Добавлено через 4 минуты
Java
1
2
3
4
    public dbclass(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
//        databasePath = context.getDatabasePath(DATABASE_NAME).getPath();
    }
эту строку пришлось заремарить иначе она вызывает краш!
значит я что то не так делал
вопрос ка это сделать правильно
0
02.10.2016, 15:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.10.2016, 15:33
Привет! Вот еще темы с ответами:

Не проходят запросы к sqlite, ошибка: The database file is locked (database is locked) - Java БД
Столкнулся с проблемой, и не понимаю из-за чего... Дело в том, что к одной таблице не проходят запрос на обновление и удаление, хотя к...

Backup Database с удаленной машины в сетевую папку - SQL Server
Добрый день! Нужно сделать backup базы данных, находящейся на удаленном компьютере в локальной сети. Причем файл *.bak должен находится...

Невозможно зайти в базу после выполнения backup database - Oracle
Здравствуйте! Помогите пожалуйста, после выполнения backup database перестало заходить в базу по адресу http://127.0.0.1:8080/apex/ . Пишет...

SQLite database is locked - Базы данных
Никак не могу понять причину этой ошибки, вроде всё работало, а тут раз и она =)


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

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