添加和修改写在一起了

可以用id判断添加和修改

和事务在一起编码

可以让代码更严谨

在这里简单的说一下事务的四大特性

事务四大特性之原子性:原子性是指事务是一个不可再分割的工作单位,事务中的操作要么都发生,要么都不发生
事务四大特性之一致性:一致性是指在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。这是说数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性。

事务四大特性之隔离性: 多个事务并发访问时,事务之间是隔离的,一个事务不应该影响其它事务运行效果

事务四大特性之持久性: 持久性,意味着在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚

create PROCEDURE p_AddOrUpd(cid int,cname VARCHAR(),cnum int,ctype VARCHAR(),cbirth VARCHAR(),cmoney VARCHAR(),out code int)
BEGIN
DECLARE t_error int default ;
DECLARE CONTINUE HANDLER for SQLEXCEPTION set t_error=;
START TRANSACTION;
IF cid=/*判断*/
THEN/*添加*/
insert into vip(Name,PhoneNum,VipType,Birth,Money) VALUES (cname,cnum,ctype,cbirth,cmoney);
ELSE/*修改*/
update vip set Name=cname,PhoneNum=cnum,VipType=ctype,Birth=cbirth,Money=cmoney where Id=cid;
END IF; /*错误回滚*/
if t_error=
THEN
set code=;ROLLBACK;
ELSE
set code=;COMMIT;
end IF;
END drop PROCEDURE p_AddOrUpd CALL p_AddOrUpd(,'',,'','','',@code);/*调用存储过程*/
select @code;

接下来是删除

删除和正常的代码区别不大

加上事务也是非常的清晰明了

 create PROCEDURE p_delete(cid int,out code int)
BEGIN
DECLARE t_error int default ;
DECLARE CONTINUE HANDLER for SQLEXCEPTION set t_error=;
START TRANSACTION;
/*删除*/
delete from vip where Id=cid; /*错误回滚*/
if t_error=
THEN
set code=;ROLLBACK;
ELSE
set code=;COMMIT;
end IF;
END CALL p_delete(,@code);
select @code;

最后就是分页查询修改时的数据反填了

create PROCEDURE p_pager(pageindex int,pagesize int,out pagecount int,out datacount int,cid int,cname VARCHAR(),ctype VARCHAR())
BEGIN
/*获取查询数据*/
set @sqlpager=concat('select * from vip where 1=1',
IF(cid=,'',concat(' and Id=cid')),
if(cname='','',concat(' and Name like "%',cname,'%"')),
IF(ctype='','',concat(' and VipType="',ctype,'"')),
' limit ',(pageindex-)*pagesize,pagesize); PREPARE s1 from @sqlpager;
EXECUTE s1; /*获取总条数数*/
set @sqlcount=concat('set @datacount=(select count(*) from vip where 1=1',
IF(cid=,'',concat(' and Id=cid')),
if(cname='','',concat(' and Name like "%',cname,'%"')),
IF(ctype='','',concat(' and VipType="',ctype,'"')),')'); PREPARE s2 from @sqlcount;
EXECUTE s2; /*总页数*/
set pagecount=(@datacount*1.0/pagesize); END drop PROCEDURE p_pager; CALL p_pager(,,@pagecount,@datacount,,'','');
select @pagecount,@datacount;

根据条件的判断

可是识别获取的数据用来显示

可以用来查询

也可以用来修改时的数据反填

这就是存储过程加事务

希望能给大家带来帮助!

谢谢浏览!

MySQL--增删改查分页存储过程以及事务的更多相关文章

  1. spring boot+mybatis+mysql增删改查分页

    server: port: servlet: context-path: /springBootMybatis spring: datasource: name: test url: jdbc:mys ...

  2. OracleHelper(对增删改查分页查询操作进行了面向对象的封装,对批量增删改操作的事务封装)

    公司的一个新项目使用ASP.NET MVC开发,经理让我写个OracleHelper,我从网上找了一个比较全的OracleHelper类,缺点是查询的时候返回DataSet,数据增删改要写很多代码(当 ...

  3. MySQL—增删改查,分组,连表,limit,union,alter,排序,去重

    MySQL增删改查 在表格的增删改查中,查的内容是最多的,包括group by ,join,limit,union,alter,排序都是服务于查的 #sql语句数据行操作补充 #增加: #insert ...

  4. 基于gin的golang web开发:mysql增删改查

    Go语言访问mysql数据库需要用到标准库database/sql和mysql的驱动.标准库的Api使用比较繁琐这里再引入另一个库github.com/jmoiron/sqlx. go get git ...

  5. SpringMVC4+MyBatis3+SQLServer 2014 整合(包括增删改查分页)

    前言 说起整合自然离开ssm,我本身并不太喜欢ORM,尤其是MyBatis,把SQL语句写在xml里,尤其是大SQL,可读性不高,出错也不容易排查. 开发环境 idea2016.SpringMVC4. ...

  6. PHP MySql增删改查

    mysql_connect()连接数据库 mysql_select_db选择数据库 mysql_fetch_assoc()获取结果集 mysql_query()执行sql语句 实例如下: <?p ...

  7. mysql增删改查练习

    Mysql增删改查sql语句练习 关于数据库的一些操作: 进入mysql 命令行: mysql -uroot –p 查看所有数据库: show databases; 创建数据库: create dat ...

  8. Django学习之mysql增删改查

    上节介绍了如何使用命令行操作mysql增删改查,现在介绍如何使用python管理mysql 使用pip 下载完mysql后,mysql会以pymysql模块的形式存储在pycharm的包文件里.我们通 ...

  9. node-express项目的搭建并通过mongoose操作MongoDB实现增删改查分页排序(四)

    最近写了一个用node来操作MongoDB完成增.删.改.查.排序.分页功能的示例,并且已经放在了服务器上地址:http://39.105.32.180:3333. Mongoose是在node.js ...

随机推荐

  1. 清北学堂模拟赛d5t6 cube

    题面有误!10,11,12操作类别为A,13,14,15类别为B,16,17,18类别为C. 分析:一道大暴力,每次记录一下走了多少步,上一步操作类别是啥就可以了.最后只需要写6种操作,每一次操作进行 ...

  2. xth的第 12 枚硬币(codevs 1366)

    题目描述 Description 传说 xth 曾经拥有11枚完全相同硬币(你懂得),不过今年呢,rabbit又送了他一 枚硬币.这枚硬币和其他硬币外观相同,只有重量不同,或轻或重.Xth 一不小心, ...

  3. 传染病控制(洛谷 1041 WA 90)

    题目背景 近来,一种新的传染病肆虐全球.蓬莱国也发现了零星感染者,为防止该病在蓬莱国大范围流行,该国政府决定不惜一切代价控制传染病的蔓延.不幸的是,由于人们尚未完全认识这种传染病,难以准确判别病毒携带 ...

  4. Java下用Jackson进行JSON序列化和反序列化(转)

    Java下常见的Json类库有Gson.JSON-lib和Jackson等,Jackson相对来说比较高效,在项目中主要使用Jackson进行JSON和Java对象转换,下面给出一些Jackson的J ...

  5. 查看TEMP 表空间usage

    SELECT S.sid || ','|| S.serial# sid_serial, S.username, S.osuser, P.spid, S.module, P.program, SUM ( ...

  6. Android:阻止输入法将图片压缩变形

    Scrollview定义中添加一行: android:isScrollContainer="false"

  7. broadleaf commerce到mysql和tomcat的迁移

    近期刚刚接触broadleaf commerce, 一个电商站点的开源模版.详细的执行和配置能够參考链接:点击打开链接 而该模版是在jetty容器下执行的,数据库是HSQL.官方站点上给出了怎样将数据 ...

  8. Myeclipse中解决spring配置文件无提示问题

    相信非常多人都遇到过在部署spring框架写spring的配置文件时无提示内容的问题,都是仅仅能提示一些标签 名,而无法提示属性值,bz我本人今天也遇到了这种问题.在网上找了非常久答案,非常多方法都不 ...

  9. 我的Android进阶之旅------&gt;android中getLocationInWindow 和 getLocationOnScreen的差别

    View.getLocationInWindow(int[] location) 一个控件在其父窗体中的坐标位置 View.getLocationOnScreen(int[] location) 一个 ...

  10. 持续集成(CI)工具------Hudson/Jenkins(Continuous Integration)安装与配置具体解释

    本文同意转载.但请标明出处:http://blog.csdn.net/wanghantong/article/40985653/, 版权全部 文章概述: 一. 描写叙述了持续集成工具Hudson的安装 ...