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/
转载文章受原作者版权保护。转载请注明原作者出处!