zoukankan      html  css  js  c++  java
  • android----Room数据库的简单操作(1)

    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('
    ');
            }
            textView.setText(text);
        }
    
    }
    复制代码

      

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

      

  • 相关阅读:
    Pycharm使用
    解决TortoiseGit下载代码每次要输入用户名、密码
    GitLab创建项目
    【编码格式错误】SyntaxError: Non-UTF-8 code starting with
    C 位段,位域
    跳跃表 -- 随机平衡原理
    PHP 中的新语法 new static 是个啥意思?
    位运算之——按位与(&)操作——(快速取模算法)
    Redis Scan迭代器遍历操作原理(一)
    Redis Scan迭代器遍历操作原理(二)
  • 原文地址:https://www.cnblogs.com/hrzgj/p/14850528.html
Copyright © 2011-2022 走看看