数据库Dao层编增删改查写,数据库事务,数据库升级
数据库事务
有两个特点
1.安全性
情景:正常的转账行为,这个时候如果出现停电等异常,已经扣钱但是没有加钱;这个时候就可用数据库事务解决问题
2.高效性:
使用数据库事务添加享受同数量的数据,对比耗时少:
原理:没开始事务的是打开数据库,插入数据,关闭数据库:
开启事务的是数据存到内存,然后一次写入到数据库;
数据库升级
升级的时候版本号必须要大于等于2;而且要大于上一版本;
package com.example.databasedemo; import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log; import androidx.annotation.Nullable; public class DataBaseHelper extends SQLiteOpenHelper { private static final String TGA ="DatabaseHelper"; public DataBaseHelper(@Nullable Context context) {
super(context, Constants.DATABASE_NAME, null, Constants.VRESION_CODE);
} @Override
public void onCreate(SQLiteDatabase db) {
//创建时回调
Log.d(TGA,"创建数据库。。。");
//创建字段
//sql creat table table_name(
String sql="create table "+Constants.TABLE_NAME+"(_id integer,name varchar,age integer,salary integer)";
db.execSQL(sql);
} @Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
//升级时回调
Log.d(TGA,"升级数据库。。。"); String sql;
//db.execSQL(sql); switch (oldVersion)
{
case 1: sql="alert table "+Constants.TABLE_NAME+" add address varchar";
db.execSQL(sql);
break; case 2:
sql="alert table "+Constants.TABLE_NAME+" add phone integer ,address varchar";
db.execSQL(sql);
break; } }
}
Dao层编写增删改查
与javaweb大体相同,只是代码有些不一样
package com.example.databasedemo; import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log; import java.security.AccessControlContext; public class Dao { private static final String TAG="Dao";
private final DataBaseHelper mHelper; public Dao(AccessControlContext context){ mHelper =new DataBaseHelper(context);
} public void insert(){
SQLiteDatabase db= mHelper.getWritableDatabase();
String sql ="insert into "+Constants.TABLE_NAME +" (_id ,name ,age,salary,phone,address) values (?,?,?,?,?,?)";
db.execSQL(sql,new Object[]{1,"BillGates",60,1,110,"USA"});
db.close();
} public void delete(){
SQLiteDatabase db= mHelper.getWritableDatabase();
String sql ="delete from "+Constants.TABLE_NAME +" where age = 60";
db.execSQL(sql);
db.close();
} public void update(){
SQLiteDatabase db= mHelper.getWritableDatabase();
String sql ="update from "+Constants.TABLE_NAME +" set salary= 2 where age = 60";
db.execSQL(sql);
db.close();
} public void query(){ SQLiteDatabase db= mHelper.getWritableDatabase();
String sql ="select form "+Constants.TABLE_NAME +" ";
Cursor cursor =db.rawQuery(sql,null); while (cursor.moveToNext()){
int index=cursor.getColumnIndex("name");
String name =cursor.getColumnName(index);
Log.d(TAG,"name=="+name);
}
cursor.close();
db.execSQL(sql);
db.close();
}
}
数据库Dao层编增删改查写,数据库事务,数据库升级的更多相关文章
- Delphi - cxGrid连接Oracle数据库 实现数据的增删改查
cxGrid连接Oracle数据库 实现数据的增删改查 cxGrid连接Oracle数据库 1:通过OraSession连接数据库.OraDataSet实现OraSession和OraDataSour ...
- sqlite数据库操作详细介绍 增删改查,游标
sqlite数据库操作详细介绍 增删改查,游标 本文来源于www.ifyao.com禁止转载!www.ifyao.com Source code package com.example ...
- 【设计模式】【应用】使用模板方法设计模式、策略模式 处理DAO中的增删改查
原文:使用模板方法设计模式.策略模式 处理DAO中的增删改查 关于模板模式和策略模式参考前面的文章. 分析 在dao中,我们经常要做增删改查操作,如果每个对每个业务对象的操作都写一遍,代码量非常庞大. ...
- abp(net core)+easyui+efcore仓储系统——展现层实现增删改查之控制器(六)
abp(net core)+easyui+efcore仓储系统目录 abp(net core)+easyui+efcore仓储系统——ABP总体介绍(一) abp(net core)+easyui+e ...
- MySQL数据库之表的增删改查
目录 MySQL数据库之表的增删改查 1 引言 2 创建表 3 删除表 4 修改表 5 查看表 6 复制表 MySQL数据库之表的增删改查 1 引言 1.MySQL数据库中,数据库database就是 ...
- 在python中连接mysql数据库,并进行增删改查
数据库在开发过程中是最常见的,基本上在服务端的编程过程中都会使用到,mysql是较常见的一种数据库,这里介绍python如果连接到数据库中,并对数据库进行增删改查. 安装mysql的python扩展 ...
- ABP入门系列(6)——展现层实现增删改查
这一章节将通过完善Controller.View.ViewModel,来实现展现层的增删改查.最终实现效果如下图: 一.定义Controller ABP对ASP.NET MVC Controllers ...
- ABP入门系列(5)——展现层实现增删改查
ABP入门系列目录--学习Abp框架之实操演练 这一章节将通过完善Controller.View.ViewModel,来实现展现层的增删改查.最终实现效果如下图: 一.定义Controller ABP ...
- abp(net core)+easyui+efcore实现仓储管理系统——展现层实现增删改查之列表视图(七)
abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...
随机推荐
- 回炉重造之重读Windows核心编程-004-进程
进程是一个正在运行的程序的实例,由内核对象和地址空间组成.进程是不活泼的,执行地址空间中代码的是在它的环境中运行线程.每个线程都需要自己的一组CPU寄存器和堆栈. 为了让所有线程都能运行,操作系统就要 ...
- 关于apt-get remove 与 apt-get purge
今天在Ubuntu服务器上安装supervisor,部署没成功想卸载重来,sudo apt-get remove supervisor 后发现配置文件还在,便手动删除了配置文件.再次安装,提示配置文件 ...
- ACM模板_axiomofchoice
目录 语法 c++ java 动态规划 多重背包 最长不下降子序列 计算几何 向量(结构体) 平面集合基本操作 二维凸包 旋转卡壳 最大空矩形 | 扫描法 平面最近点对 | 分治 最小圆覆盖 | 随机 ...
- opencv —— remap 重映射
重映射的概念 重映射,就是把一幅图像中某位置的像素放置到另一个图片指定位置的过程. 实现重映射:remap 函数 将图像进行重映射几何变换,基于的公式为:dst (x, y) = src ( mapx ...
- RHEL6 yum本地源配置
RHEL6 yum本地源配置 将RHEL6 的iso上传到/file1/xxx 新建目录/file1/xxx/mnt,将iso挂载到mnt目录 mount rhel-server-6.3-x86_64 ...
- StackExchange.Redis 系列 1:基础使用
本系列博文已经全部完成,完整系列请访问:https://blog.zhuliang.ltd/tags/StackExchange-Redis%E7%B3%BB%E5%88%97/ 本文转自:https ...
- stm32f103vct6外扩sram芯片
STM32F103是一款高性价比.多功能的单片机,配备常用的32位单片机片外资源,基于ARM Cortex-M3的32位处理器芯片,片内具有256KB FLASH,48KB RAM ( 片上集成12B ...
- Beego 过滤器
过滤器 beego 支持自定义过滤中间件,例如安全验证,强制跳转等. 过滤器函数如下所示: beego.InsertFilter(pattern string, position int, filte ...
- 吴裕雄--天生自然HADOOP操作实验学习笔记:mapreduce和yarn命令
实验目的 了解集群运行的原理 学习mapred和yarn脚本原理 学习使用Hadoop命令提交mapreduce程序 学习对mapred.yarn脚本进行基本操作 实验原理 1.hadoop的shel ...
- 打印机打印pdf文件特别慢怎么解决
PDF等文件中都包含了一些或者很多光栅化数据(图片.嵌入的字体等).这些文件在打印时,打印机驱动程序都会在系统中生成大量EMF文件(增强型变换文件),小到1MB,大到500MB,过大的EMF临时文件会 ...