Хранимый объект в SQLite - PullRequest
       3

Хранимый объект в SQLite

0 голосов
/ 27 августа 2018


Допустим, у меня есть объект с именем myFilm из Film class:

Film myFilm = new Film("spider-man","2H");


public class Film {
    String name, length;
    public Film(String name, String length) {
        this.name = name;
        this.length = length;
    }
}

Мне нужно сохранить его в базе данных SQLite и получить снова
Как я могу это сделать?

1 Ответ

0 голосов
/ 27 августа 2018

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

Шаги следующие:

Сначала вам нужно создать свой класс сущностей.

@Entity(tableName = "filmTable")
public class FilmEntity{

    @PrimaryKey
    @NonNull
    private int filmId;

    private String name;

    private String length;

    public String getName() { return name;}

    public void setName(String name) { this.name = name;}

    public String getLength() {return price; }

    public void setLength(String length) { this.length = length;}
}

Затем вы должны создать свой класс filmDao для ваших запросов в базе данных.

@Dao
public interface FilmDao {

    @Insert
    void insertFilm(FilmEntity filmEntity);

    @Delete()
    void deleteFilm(FilmEntity filmEntity);

    @Query("SELECT * FROM filmTable")
    List<FilmEntity> getFilms();
}

И ваш класс базы данных.

@Database(entities = {FilmEntity.class}, version = 1)
public abstract class FilmDatabase extends RoomDatabase {

        private static FilmDatabase sInstance;

        public static final String DATABASE_NAME = "film-db";

        public abstract FilmDao filmDao();

        public static FilmDatabase getInstance(final Context context) {
           if (sInstance == null) {
             synchronized (FilmDatabase.class) {
                if (sInstance == null) {
                    sInstance = buildDatabase(context.getApplicationContext());
                }
            }
        }
        return sInstance;
    }

        private static FilmDatabase buildDatabase(final Context appContext){
            return Room.databaseBuilder(appContext, FilmDatabase.class, DATABASE_NAME).build();
        }
    }

Наконец, вы настроены на создание экземпляра вашей RoomDB со следующим кодом в классе вашего приложения.

public class App extends Application {

    public static FilmDatabase filmDatabase;

    @Override
    public void onCreate() {
        super.onCreate();
        filmDatabase = FilmDatabase.getInstance(this);
    }
}

Наконец, вы можете получить доступ к объектам вашей базы данных. Это возвращает список элементов MovieEntity из вашей базы данных.

App.filmDatabase.filmDao().getFilms();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...