Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Java Мобильная разработка (Android)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.01.2021, 12:59   #1
JackieRyan
 
Регистрация: 18.01.2021
Сообщений: 8
По умолчанию Обновление БД при запуске программы

Здравствуйте! Пытаюсь сделать код который будет изменять конкретный текст в БД при каждом запуске. Кое как написал что смог. Можете пожалуйста исправить что не так? Заранее спасибо!

Подробнее про задачу:
1. Есть путь: data/data/com.gameloft.android.ANMP.GloftPOHM/databases/
2. Там есть файл sqlite: gameloft_sharing
3. В нем в двух местах есть текст: "time":"1663568928" (это пример, там всегда 10 цифр, но они разные при каждой установке). И да, я знаю что это Юникс, но в данном случае это не имеет никакого значения, здесь это просто цифры!

Нужно сделать, что бы при каждом запуске эти 10 цифр в обоих параметрах синхронно менялись на рандомные (очень важно, что бы эти цифры в обоих разделах после каждого изменения были идентичны).

Собственно мой код (пока что работает только генератор 10 цифр, и то я не уверен, что класс SQLite его подхватит):
Код:
import java.io.File;
import java.util.Random;
import android.app.Activity;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class Numbers {
    public static void main(String[] args) {
        Random rand = new Random();
        rand.nextInt((999999999) + 1111111111);
    }
}

public class SQLite extends SQLiteOpenHelper {

    public SQLite(Activity activity) {
        super(activity.getApplicationContext(), "", null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        UPDATE table SET field = replace( field, "time":"%", "time":"Numbers");
    }

    public SQLiteDatabase open(String filepath) {
        File fDB = new File(filepath);
        if (!fDB.exists()) {
            return null;
        }
        return SQLiteDatabase.openDatabase(filepath, null, SQLiteDatabase.OPEN_READWRITE);
    }
}
Помогите пожалуйста привести код в работоспособное состояние. Я дальше просто не знаю что делать...
JackieRyan вне форума Ответить с цитированием
Старый 26.01.2021, 21:02   #2
фЁдОр
Форумчанин
 
Аватар для фЁдОр
 
Регистрация: 06.09.2007
Сообщений: 908
По умолчанию

Думаю вам нужно более подробно ознакомиться с жизненными циклами активити
фЁдОр вне форума Ответить с цитированием
Старый 03.02.2021, 12:45   #3
JackieRyan
 
Регистрация: 18.01.2021
Сообщений: 8
По умолчанию

фЁдОр, не покажешь пример пожалуйста?
JackieRyan вне форума Ответить с цитированием
Старый 03.02.2021, 21:24   #4
фЁдОр
Форумчанин
 
Аватар для фЁдОр
 
Регистрация: 06.09.2007
Сообщений: 908
По умолчанию

Посмотрите эту ссылку https://metanit.com/java/android/2.1.php что бы иметь представление о жизненных циклов. И в mainActivity в onCreate, где у вас происходит запуск приложения вы можете подключиться к бд и проводить любые манипуляции.
фЁдОр вне форума Ответить с цитированием
Старый 03.02.2021, 21:30   #5
JackieRyan
 
Регистрация: 18.01.2021
Сообщений: 8
По умолчанию

фЁдОр, спасибо буду знать! но я посмотрел видео на ютубе и пришел к выводу что мне здесь активити вовсе не нужны... здесь нужно использовать Context
JackieRyan вне форума Ответить с цитированием
Старый 03.02.2021, 22:32   #6
фЁдОр
Форумчанин
 
Аватар для фЁдОр
 
Регистрация: 06.09.2007
Сообщений: 908
По умолчанию

А как у вас подключение происходит в фоновом режиме через service?
фЁдОр вне форума Ответить с цитированием
Старый 03.02.2021, 22:38   #7
JackieRyan
 
Регистрация: 18.01.2021
Сообщений: 8
По умолчанию

фЁдОр, без понятия... решил все с нуля делать по ютубу, вот что пока что получилось:
Код:
package com.example.jwr;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

import androidx.annotation.Nullable;

import java.util.Random;

public class AB extends SQLiteOpenHelper {
    public static void main(String... args) {
        Random RD = new Random();
        RD.nextInt((999999999) + 100000001);
    }

    public AB(@Nullable Context context) {
        super(context, "gameloft_sharing", null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        void () {
       String query = "UPDATE table SET field = replace( field, "time":"%", "time":" ");"
    }
}
не могу понять как этот UPDATE table SET field подключить... да и в целом не рабочая хрень...
JackieRyan вне форума Ответить с цитированием
Старый 03.02.2021, 22:53   #8
фЁдОр
Форумчанин
 
Аватар для фЁдОр
 
Регистрация: 06.09.2007
Сообщений: 908
По умолчанию

оно и не будет работать. вам нужно так же ознакомиться как работают бд в приложениях https://metanit.com/java/android/14.5.php
фЁдОр вне форума Ответить с цитированием
Старый 03.02.2021, 22:57   #9
JackieRyan
 
Регистрация: 18.01.2021
Сообщений: 8
По умолчанию

фЁдОр, спасибо конечно за советы, но не мог бы ты написать мне сразу нужный рабочий код? я не хочу вечность изучать весь язык джава что бы написать 10 строк кода и больше не вспоминать про него...
JackieRyan вне форума Ответить с цитированием
Старый 03.02.2021, 23:03   #10
JackieRyan
 
Регистрация: 18.01.2021
Сообщений: 8
По умолчанию

фЁдОр, потому что все те якобы "уроки" в ютубе и сайты учат одному и тому же - "как создать базу и записать туда два слова"! а у меня в принципе другая ситуация, у меня БД всегда есть, не может быть такого что ее нет... и не не нужно туда что то новое записывать, а всего то только изменить два числа на другие...
JackieRyan вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В "Отладка" пустое окно при ошибке (она возникает при работе, а не при запуске программы). Как понять из-за чего крашится программа? Мaкс Qt и кроссплатформенное программирование С/С++ 29 07.03.2020 10:29
Проблема при запуске программы на C# Данил_2002 C# (си шарп) 2 23.07.2019 15:13
Обновление программы при запуске. Теория. Artsiom Помощь студентам 1 27.12.2016 09:21
Ошибка при запуске программы lisica198808 Помощь студентам 5 08.12.2013 23:45
Есть три программы. Их нужно объеденить в одну, тоесть чтоб при запуске программы были пункты меню для каждой из программ afirat Помощь студентам 9 28.04.2012 12:39