删除某个字段_Android中Room的使用4_删除一个字段
Android不能直接删除表中的某个字段,可以通过以下四步实现这个功能。
- 创建一个新表,只设定想要的字段
2. 将原来表中的数据复制过来,
3. 将原表删除
4. 将新建的表改名
package com.cdc.viewModel;
import android.content.Context;import androidx.annotation.NonNull;
import androidx.room.Database;
import androidx.room.Room;
import androidx.room.RoomDatabase;
import androidx.room.migration.Migration;
import androidx.sqlite.db.SupportSQLiteDatabase;
@Database(entities = {Word.class},version=5,exportSchema = false)
public abstract class WordDataBase extends RoomDatabase {private static WordDataBase INSTANCE;//单例模式public static synchronized WordDataBase getInstance(Context context){if(INSTANCE==null){INSTANCE= Room.databaseBuilder(context.getApplicationContext(),WordDataBase.class,"Word_database")//.allowMainThreadQueries() 强制要求在主线程运行(真实环境中不使用)//.fallbackToDestructiveMigration()//破坏试的迁移.原有的数据被清空,重新建立新表.addMigrations(MIGRATION_4_5).build();}return INSTANCE;}public abstract WordDao getWordDao();//版本号 3到4static final Migration MIGRATION_3_4=new Migration(3,4) {@Overridepublic void migrate(@NonNull SupportSQLiteDatabase database) {//没有布尔值,用INTEGER代替//使用"ALTER TABLE Word ADD COLUMN bar_data2 INTEGER NOT NULL DEFAULT 1"出错。//使用下面分开的形式,可以正确执行database.execSQL("ALTER TABLE Word "+" ADD COLUMN bar_data2 INTEGER "+" NOT NULL DEFAULT 1");}};//版本号 4到5 没有办法直接删除某一列。可以通过以下四步完成删除某一列的效果static final Migration MIGRATION_4_5=new Migration(4,5) {@Overridepublic void migrate(@NonNull SupportSQLiteDatabase database) {//1.创建一个新表WordTemp,只设定想要的字段database.execSQL("CREATE TABLE WordTemp "+"( id INTEGER "+" PRIMARY KEY NOT NULL ,"+" english_word TEXT ,"+" chinese_meaning TEXT "+" ) ");//2.将原来表中的数据复制过来,database.execSQL(" INSERT INTO WordTemp (id,english_word,chinese_meaning) " +"SELECT id,english_word,chinese_meaning FROM Word ");//3. 将原表删除database.execSQL(" DROP TABLE Word ");//4.将新建的表改名database.execSQL(" ALTER TABLE WordTemp RENAME to Word");}};
}
删除某个字段_Android中Room的使用4_删除一个字段相关推荐
- php 二维数组字段合并,PHP将二维数组某一个字段相同的数组合并起来的方法,二维数组数组_PHP教程...
PHP将二维数组某一个字段相同的数组合并起来的方法,二维数组数组 本文实例讲述了PHP将二维数组某一个字段相同的数组合并起来的方法.分享给大家供大家参考,具体如下: 例子: array(3) { [0 ...
- oracle通过值查字段,Oracle 中 根据值 查询 所在 表和字段
-------------------- -- 这里是查询 数字型字段值 /*declare CURSOR cur_query IS select table_name, column_name, d ...
- mysql 排除字段_mysql中select某表时排除个别字段,shell实现
在使用mysql的日常生活中,偶尔会有一些奇奇怪怪的需求,例如实现类似:select * EXCEPT password,address from users; 要想从users信息表中查询用户信息, ...
- java 删除文件失败_java中File的delete()方法删除文件失败的原因
一般来说 java file.delete失败 有以下几个原因 1.看看是否被别的进程引用,手工删除试试(删除不了就是被别的进程占用) 2.file是文件夹 并且不为空,有别的文件夹或文件, 3.极有 ...
- mysql 中将表中某一字段值查询出来,更新到另一个字段上的SQL写法
场景:想要将receiveTime的值赋给create_time,此时涉及到同表"自更新"的操作 1.错误示例 update order_info set create_time ...
- oracle 如何删除表列,Oracle中增加,修改,删除表中的列
内核对TCP REUSEPORT的优化 Q&A 当有人问起我关于reuseport的一些事的时候,我们的对话基本如下:Q1:什么是reuseport?A1:reuseport是一种套接字复用机 ...
- MYSQL WHERE 当一个字段不为NULL的时候使用另一个字段判断
AND ((tmp.delivery_time IS NULL AND bod.taking_date >= #{vo.takingStart})OR(tmp.delivery_time IS ...
- 在mysql中删除表中字段_MySQL中的表中增加删除字段
1.增加一个字段 alter table user表 add COLUMN new1字段 VARCHAR(20) NOT NULL DEFAULT 0; //增加一个字段,VARCHERA 20 ...
- 同名字的数值求和插入行_中望CAD2021:支持表格和字段插入公式,提高数据处理效率...
表格是dwg文档中常见的图形元素,设计师通过表格可清晰地展示一系列数据信息. 为提高设计师处理数据的效率,中望CAD2021提供了在表格和字段中插入公式的功能,设计师使用公式即可自动计算并显示具有关联 ...
最新文章
- hdu1160FatMouse's Speed(DP)
- (转)男人的真?。。。
- Linux正则和grep命令
- fiddler设置中文版本_突破安卓7.0以上版本WX小程序抓包篇
- 【干货】美团大脑系列之商品知识图谱的构建及应用.pdf(附下载链接)
- Oracle笔记整理
- mongodb java 不等于_mongoDB在java上面的应用
- Android请求麦克风权限+系统权限页面回调
- python caffe框架_Caffe(卷积神经网络框架)配置-Windows篇
- MATLAB绘制垂直正态分布密度曲线
- 如何将win7系统的电脑屏幕改成护眼的豆沙绿
- openwrt-mt7628 wds配置
- 如何保障企业邮箱安全
- 动态规划:奶牛吃草问题
- JAVA多线程解决哲学家问题(GUI演示)
- 大一计算机论文_大一计算机论文大纲模板范文 大一计算机论文提纲怎样写
- medusa命令介绍
- vbs:模拟键盘操作和在指定窗口进行操作
- fing网络扫描仪android,Fing网络扫描仪
- Arch Linux遇到的坑(下)