ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

android----Room数据库的简单操作(1)

2020-02-06 14:04:52  阅读:246  来源: 互联网

标签:word Room androidx 数据库 Word void import android public


  android数据库的操作和WEB类是,都是增删改查,但是android数据库操作的代码远比WEB的代码要少,而且简单不用写。如果有不懂请看代码注释

  1、用entity、dao、database创建数据库

  entity:是一个实体类

  dao:是一个接口(interface),用来对数据库经常操作

    database:继承RoomDatabase,数据库。

  代码:看代码注释

  entity:

package com.example.roomtest;

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

@Entity // 实体类
public class Word {
    @PrimaryKey(autoGenerate = true) // 将id设置为主键,并且自增
    private int id;
    @ColumnInfo(name = "English")   // 设置每列的名称
    private String English_word;
    @ColumnInfo(name = "Chinese")
    private String Chinese_meaning;
    // 主键不用构造函数
    public  Word(){}
    public Word(String english_word, String chinese_meaning) {
        English_word = english_word;
        Chinese_meaning = chinese_meaning;
    }
    public void setId(int id){
        this.id = id;
    }
    public int getId() {
        return id;
    }
    public String getEnglish_word() {
        return English_word;
    }

    public void setEnglish_word(String english_word) {
        English_word = english_word;
    }

    public String getChinese_meaning() {
        return Chinese_meaning;
    }

    public void setChinese_meaning(String chinese_meaning) {
        Chinese_meaning = chinese_meaning;
    }
}

 

 

 

  Dao:

package com.example.roomtest;

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

import java.util.List;

@Dao    // 访问数据库操作的接口 Database access object
public interface WordDao {
    //我们所有对数据库的操作都在Dao里声明
    @Insert   // 这些修饰词会在编译时候生成代码
    void insertWords(Word... words);   // 如果是一个参数就写 Word word,多个参数就这样写
    @Update
    void updataWords(Word... words);
    @Delete
    void deleteWords(Word... words);
    @Query("DELETE  FROM WORD")
    void deleteAllWords();
    @Query("SELECT * FROM WORD ORDER BY ID DESC")  // 获取所有的WORD,并且按照id降序排序
    List<Word> getAllWords();
}

 

  

    Database:

package com.example.roomtest;

import androidx.room.Database;
import androidx.room.RoomDatabase;
/*
    这里有个参数,第一个参数entities是一个集合,因为只有一个实体类,如果有多个可以逗号隔开
    第二个参数是version(版本):每一次数据库的结构发生改变,版本都得改变
    第三个参数是生成数据库表:这里先选择false
 */
@Database(entities = {Word.class},version = 1,exportSchema = false)
public abstract class WordDatabase extends RoomDatabase {
    public abstract  WordDao  getWordDao();
}

    Activity:

    

package com.example.roomtest;

import androidx.appcompat.app.AppCompatActivity;
import androidx.room.Room;
import androidx.room.RoomDatabase;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import org.w3c.dom.Text;

import java.util.List;

public class MainActivity extends AppCompatActivity {
    WordDatabase wordDatabase;
    WordDao wordDao;
    TextView textView;
    Button buttonInsert,buttonDelete,buttonUpdata,buttonwClear;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        wordDatabase = Room.databaseBuilder(this, WordDatabase.class,"word_database")
                .allowMainThreadQueries().build(); // 强制让它在主线程运行
        wordDao = wordDatabase.getWordDao();
        textView = findViewById(R.id.textView);
        buttonInsert = findViewById(R.id.button_insert);
        buttonDelete= findViewById(R.id.button_delete);
        buttonUpdata = findViewById(R.id.button_updata);
        buttonwClear = findViewById(R.id.button_clear);
        // 插入
        buttonInsert.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Word word1 = new Word("Hello", "你好");
                Word word2 = new Word("World", "世界");
                wordDao.insertWords(word1,word2);
                updataView();
            }
        });
        // 清空
        buttonwClear.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                wordDao.deleteAllWords();
                updataView();
            }
        });
        // 修改
        buttonUpdata.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Word word = new Word("Thanks","谢谢");
                word.setId(29);
                wordDao.updataWords(word);
                updataView();
            }
        });
        // 删除
        buttonDelete.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Word word = new Word("aa", "bb");
                word.setId(30);
                wordDao.deleteWords(word);
                updataView();
            }
        });

    }

    // 更新界面
    void updataView(){
        List<Word> list = wordDao.getAllWords();
        StringBuilder text = new StringBuilder();
        for(int i = 0;i<list.size();i++){
            Word word = list.get(i);
            text.append(word.getId()).append("、").append(word.getEnglish_word()).append(":").append(word.getChinese_meaning()).append('\n');
        }
        textView.setText(text);
    }

}

  

    运行结果:点击可以执行相应功能。这是最基础的功能。

  

 

 

 

标签:word,Room,androidx,数据库,Word,void,import,android,public
来源: https://www.cnblogs.com/yangxiao-/p/12268432.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有