Android开发 Room数据库框架

Room框架
Room数据库是基于SQLite数据库的一种框架,由谷歌推出,
主要有三个部分组成:

在使用之前要添加它的支持包:


    def room_version = "2.2.0-alpha01"

    implementation "androidx.room:room-runtime:$room_version"
    annotationProcessor "androidx.room:room-compiler:$room_version"

本次有以下文件构成:

Mainactivity.java

package com.example.sqlite;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;

import com.example.sqlite.room.DBEngine;
import com.example.sqlite.room.Table;

public class MainActivity2 extends AppCompatActivity {
    private DBEngine dbEngine;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);

        dbEngine = new DBEngine(this);
    }

    public void insert(View view) {
        Table table_0 = new Table("语文","张三","109");
        Table table_1 = new Table("英语","李四","234");
        Table table_2 = new Table("数学","王五","123");
        dbEngine.inserTable(table_0,table_1,table_2);
    }

    public void update(View view) {
        Table table_0 = new Table("军事",null,"124");
        table_0.setId(2);
        dbEngine.updateTable(table_0);
    }

    public void delete(View view) {
        Table table = new Table(null,null,null);
        table.setId(1);
        dbEngine.deleteTable(table);
    }

    public void queryable(View view) {
        dbEngine.queryAllTable();
    }

    public void delete_all(View view) {
        dbEngine.deleteallTable();
    }

    public void query(View view) {
        Table table = new Table(null,null,null);

        table.setId(2);
        dbEngine.queryTable(table);
    }
}

Table.java——实际上就是一张表(Entiy)

package com.example.sqlite.room;

import androidx.room.Entity;
import androidx.room.PrimaryKey;

@Entity
public class Table {

    @PrimaryKey(autoGenerate = true)
    private int id;

    private String course_name;
    private String teacher_name;
    private String course_adress;

    public Table(String course_name, String teacher_name, String course_adress) {
        this.course_name = course_name;
        this.teacher_name = teacher_name;
        this.course_adress = course_adress;
    }

    public String getCourse_name() {
        return course_name;
    }

    public void setCourse_name(String course_name) {
        this.course_name = course_name;
    }

    public String getTeacher_name() {
        return teacher_name;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public void setTeacher_name(String teacher_name) {
        this.teacher_name = teacher_name;
    }

    public String getCourse_adress() {
        return course_adress;
    }

    public void setCourse_adress(String course_adress) {
        this.course_adress = course_adress;
    }

    @Override
    public String toString() {
        return "Table{" +
                "id=" + id +
                ", course_name='" + course_name + '\'' +
                ", teacher_name='" + teacher_name + '\'' +
                ", course_adress='" + course_adress + '\'' +
                '}';
    }
}

Table_dao.java(接口)——里面含有操作数据库的方法(sql语句)

package com.example.sqlite.room;

import androidx.room.Dao;
import androidx.room.Delete;
import androidx.room.Insert;
import androidx.room.Query;
import androidx.room.RawQuery;
import androidx.room.Update;

import java.util.List;

@Dao
public interface Table_dao {

    @Insert
    void insertTable(Table... tables);

    @Update
    void updateTable(Table... tables);

    @Delete
    void deleteTable(Table... tables);

    @Query("DELETE FROM Table")
    void deleteallTable();

    @Query("SELECT * FROM Table WHERE id = :id")
    Table getTable(int id);

    @Query("SELECT * FROM Table ORDER BY ID DESC")
    List<Table> getAllTable();

}

TableDataBase.java——将数据库关联到之前设定的表

package com.example.sqlite.room;

import android.content.Context;

import androidx.annotation.NonNull;
import androidx.room.Database;
import androidx.room.DatabaseConfiguration;
import androidx.room.InvalidationTracker;
import androidx.room.Room;
import androidx.room.RoomDatabase;
import androidx.sqlite.db.SupportSQLiteOpenHelper;

@Database(entities = {Table.class},version = 1,exportSchema = false)
public abstract class TableDatebase extends RoomDatabase {

    public abstract Table_dao getTable_dao();

    private static TableDatebase INSTANCE;
    public static synchronized TableDatebase getInstance(Context context){
        if (INSTANCE == null){
            INSTANCE = Room.databaseBuilder(context.getApplicationContext(),TableDatebase.class,"TABLE_DATABASE")

                    .build();
        }
        return INSTANCE;
    }

}

DBEngine.java

package com.example.sqlite.room;

import android.content.Context;
import android.os.AsyncTask;
import android.util.Log;

import java.util.List;

public class DBEngine {

    private Table_dao table_dao;

    public DBEngine(Context context){
        TableDatebase tableDatebase = TableDatebase.getInstance(context);
        table_dao = tableDatebase.getTable_dao();

    }

    public void inserTable(Table... tables){
        new InsertAsyncTask(table_dao).execute(tables);
    }

    public void updateTable(Table... tables){
        new UpdateAsyncTask(table_dao).execute(tables);
    }

    public void deleteTable(Table... tables){
        new DeleteAsyncTask(table_dao).execute(tables);
    }

    public void deleteallTable(){
        new DeleteAllTable(table_dao).execute();
    }

    public void queryAllTable(){
        new QueryAllTable(table_dao).execute();
    }

    public void queryTable(Table... tables){
        new QueryTable(table_dao).execute(tables);
    }

    public class InsertAsyncTask extends AsyncTask<Table,Void,Void>{

        private Table_dao dao;
        public InsertAsyncTask(Table_dao table_dao){
            dao = table_dao;
        }
        @Override
        protected Void doInBackground(Table... tables) {
            dao.insertTable(tables);
            return null;
        }
    }

    public class UpdateAsyncTask extends AsyncTask<Table,Void,Void>{
        private Table_dao dao;
        public UpdateAsyncTask(Table_dao table_dao){
            dao = table_dao;
        }
        @Override
        protected Void doInBackground(Table... tables) {
            dao.updateTable(tables);
            return null;
        }
    }

    public class DeleteAsyncTask extends AsyncTask<Table,Void,Void>{
        private Table_dao dao;
        public DeleteAsyncTask(Table_dao table_dao){
            dao = table_dao;
        }

        @Override
        protected Void doInBackground(Table... tables) {
            dao.deleteTable(tables);
            return null;
        }
    }

    public class DeleteAllTable extends AsyncTask<Void,Void,Void>{
        private Table_dao dao;
        public DeleteAllTable(Table_dao table_dao){
            dao = table_dao;
        }

        @Override
        protected Void doInBackground(Void... voids) {
            dao.deleteallTable();
            return null;
        }
    }

    public static class QueryAllTable extends AsyncTask<Void,Void,Void>{
        private Table_dao dao;
        public QueryAllTable(Table_dao table_dao){
            dao = table_dao;
        }

        @Override
        protected Void doInBackground(Void... voids) {
            List<Table> allTable = dao.getAllTable();

            for (Table table : allTable){
                Log.e("leo", "doInBackground:全部查询 每一项 查询 " +table.toString());
            }

            return null;
        }
    }

    public static class QueryTable extends AsyncTask<Table,Void,Void>{
        private Table_dao dao;
        public QueryTable(Table_dao table_dao){
            dao = table_dao;
        }

        @Override
        protected Void doInBackground(Table... tables) {
            try {

                Table table = dao.getTable(tables[0].getId());

                Log.e("leo", "doInBackground:全部查询 每一项 查询 " +table.toString());
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }
    }

}

main_activity.xml


<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    xmlns:android="http://schemas.android.com/apk/res/android">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="插入"
        android:onClick="insert"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="修改"
        android:onClick="update"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="删除"
        android:onClick="delete"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="全部删除"
        android:onClick="delete_all"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="全部查询"
        android:onClick="queryable"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="条件查询"
        android:onClick="query"/>

LinearLayout>

Original: https://blog.csdn.net/GAOK11/article/details/121862842
Author: G.O.Y
Title: Android开发 Room数据库框架

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/817430/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球