All posts by 龙生

mysql存储过程之事务篇

事务的四大特征: ACID:Atomic(原子性)、Consistent(一致性)、Isolated(独立性)、Durable (持久性)   MySQL的事务支持不是绑定在MySQL服务器本身,而是与存储引擎相关:  sql代码  1. MyISAM:不支持事务,用于只读程序提高性能   2. InnoDB:支持ACID事务、行级锁、并发   3. Berkeley DB:支持事务     事务隔离级别标准: ANSI(美国国家标准学会)标准定义了4个隔离级别,MySQL的InnoDB都支持:  sql代码  1. READ UNCOMMITTED:最低级别的隔离,通常又称为dirty read,它允许一个事务读取还没commit的数据,这样可能会提高性能,但是dirty read可能不是我们想要的   2. READ COMMITTED:在一个事务中只允许已经commit的记录可见,如果session中select还在查询中,另一session此时insert一条记录,则新添加的数据不可见   3. REPEATABLE READ:在一个事务开始后,其他session对数据库的修改在本事务中不可见,直到本事务commit或rollback。在一个事务中重复select的结果一样,除非本事务中update数据库。 4. SERIALIZABLE:最高级别的隔离,只允许事务串行执行。为了达到此目的,数据库会锁住每行已经读取的记录,其他session不能修改数据直到前一事务结束,事务commit或取消时才释放锁。   Mysql的默认隔离级别是:REPEATABLE READ READ UNCOMMITTED级别会导致数据完整性的严重问题,需要自己控制如何保持数据完整性 SERIALIZABLE会导致性能问题并增加死锁的机率   Mysql事务操作语句: 1.  START TRANSACTION:开始事务,autocommit设为0,如果已经有一个事务在运行,则会触发一个隐藏的COMMIT   2.  COMMIT:提交事务,保存更改,释放锁   3.  ROLLBACK:回滚本事务对数据库的所有更改,然后结束事务,释放锁   4.  SAVEPOINT savepoint_name:创建一个savepoint识别符来ROLLBACK TO SAVEPOINT   5.  ROLLBACK TO SAVEPOINT savepoint_name:回滚到从savepoint_name开始对数据库的所有更改,这样就允许回滚事务中的一部分,保证更改的一个子集被提交   6.  SET TRANSACTION:允许设置事务的隔离级别   7.  LOCK TABLES:允许显式的锁住一个或多个table,会隐式的关闭当前打开的事务,建议在执行LOCK TABLES语句之前显式的commit或rollback。我们一般所以一般在事务代码里不会使用LOCK TABLES     定义事务 MySQL默认的行为是在每条SQL语句执行后执行一个COMMIT语句,从而有效的将每条语句独立为一个事务。  在复杂的应用场景下这种方式就不能满足需求了。  为了打开事务,允许在COMMIT和ROLLBACK之前多条语句被执行,我们需要做以下两步:  1, 设置MySQL的autocommit属性为0,默认为1  2,使用START TRANSACTION语句显式的打开一个事务 上面已经说了,当使用START TRANSACTION开始一个事物的时候,则SET autocommit=0不会起作用,因为START TRANSACTION会隐式的提交session中所有当前的更改,结束已有的事务,并打开一个新的事务。     使用SET AUTOCOMMIT语句的存储过程例子:  sql代码  1. CREATE PROCEDURE tfer_funds   2.     (from_account int, to_account int, tfer_amount numeric(10,2))   3. BEGIN   4.     SET autocommit=0;   5.    6.     UPDATE account_balance SET balance=balance-tfer_amount WHERE account_id=from_account;   7.    8.     UPDATE account_balance SET balance=balance+tfer_amount WHERE account_id=to_account;   9.    10.    COMMIT;   11.END;   使用START TRANSACITON打开事务的例子:  sql代码  1. CREATE PROCEDURE tfer_funds   2.     (from_account int, to_account int, tfer_amount numeric(10,2))   3. BEGIN   4.     START TRANSACTION;   5.    6.     UPDATE account_balance SET balance=balance-tfer_amount WHERE account_id=from_account;   7.    8.     UPDATE account_balance SET balance=balance+tfer_amount WHERE account_id=to_account;   9.    10.    COMMIT;   11.END;       通常COMMIT或ROLLBACK语句执行时才完成一个事务,但是有些DDL语句等会隐式触发COMMIT,所以应该在事务中尽可能少用或注意一下:  Java代码  1. ALTER FUNCTION   2. ALTER PROCEDURE   3. ALTER TABLE   4. BEGIN   5. CREATE DATABASE   6. CREATE FUNCTION   7. CREATE INDEX   8. CREATE PROCEDURE   9. CREATE TABLE   10.DROP DATABASE   11.DROP FUNCTION   12.DROP INDEX   13.DROP PROCEDURE   14.DROP TABLE   […]

龙生   30 May 2014
View Details

MYSQL分页存储过程及事务处理

最近给客户做的一小系统是SQLSERVER的数据库,因为特殊原因要切换到MYSQL上去,切换数据库确实让人头疼的,SQLSERVER和MYSQL的存储过程还是有很大差别的,下面是我做切换时转换的MYSQL版的分页过程,和事务处理的一个测试过程,事务处理也不像SQLSERVER那样。不多说了,供学习MYSQL的兄弟们参考下,我用的MYSQL5.5版本,经过测试都是可行的。  

 

from:http://www.cnblogs.com/peaceli/archive/2013/08/14/MYSQL.html

龙生   30 May 2014
View Details

MariaDB 存储过程返回 汉字有关问题

MariaDB 存储过程返回 汉字问题创建代码如下:CREATE DEFINER=root@localhost PROCEDURE test(IN id INT, OUT result VARCHAR(50))LANGUAGE SQLNOT DETERMINISTICCONTAINS SQLSQL SECURITY DEFINERCOMMENT "BEGIN  if id = 1 then  set result = '红字';  else  set result = 'ghj';     end if;ENDset names utf8;set @a=";  CALL test(0, @a);select @a;没有问题;set names utf8;set @a=";  CALL test(1, @a);select @a;报错!运行总是无法成功返回汉字,郁闷——解决方案——————--create procedure t ( aa char(10) charset 'gbk') from:http://www.myexception.cn/mysql/744652.html

龙生   30 May 2014
View Details

ASP.NET中BasePage的几种设计方式

使用它主要是为了复用代码的公用部分下面是整理出来三种实现方式:准备工作:1 先在BasePage.cs中创建部分类BasePage 比在创建接下来用到的用于演示的方法BaseLoad代码:public partial  class BasePage : System.Web.UI.Page{        protected void BaseLoad()        {            string code = Request.QueryString["id"];            if (String.IsNullOrEmpty(code))            {                Response.End();            }        }}2 使用BasePage.cs的Default.aspxDefault.aspx.cs代码:public partial class Default : BasePage{        protected  void Page_Load(object sender, EventArgs e)    {        //do something    }}一、重写BasePage的OnLoad方法,该方法会触发OnLoad事件BasePage.cs代码:public partial  class BasePage : System.Web.UI.Page{    protected override void OnLoad(EventArgs e)    {        BaseLoad();        base.OnLoad(e);    }}二、在构造函数中把BaseLoad注册到基类的this.Page.PreLoad事件BasePage.cs代码:public partial  class BasePage : System.Web.UI.Page{    public BasePage()    {        this.Page.PreLoad += BaseLoad;    }}三、这种方式让继承他的子类方式看起来有些怪异(不能在里面使用Page_Load)BasePage.cs 代码:public abstruct class BasePage : System.Web.UI.Page{    protected void Page_Load()    {        string code = Request.QueryString["id"];        if (String.IsNullOrEmpty(code))        {            Response.End();        }        PageLoad();        }    protected […]

龙生   29 May 2014
View Details

百度音乐播放内核 MuPlayer

MuPlayer 是一款跨平台、轻量级的音频播放解决方案,是百度@音乐前端团队开发维护的浏览端音频播放内核,它基于HTML5 Audio及Flash音频技术,已在百度音乐多个线上产品线中应用,具备很强的灵活性和稳定性。 MuPlayer主要特性 多端通用(覆盖PC & WebApp),提供统一的API调用方式 Audio与Flash内核的平滑切换(支持IE 6在内的所有常见浏览器) 提供了完善的文档、灵活简洁的API设计 针对WebApp端的优化打包,节省加载资源 已经在百度多条产品线上实际应用,稳定可靠 示例演示:Demo,提供了MuPlayer的基本调用Demo,可供参考及测试; API文档:MuPlayer API 关注我们(@音乐前端),了解更多开源项目^^ from:http://www.oschina.net/p/muplayer

龙生   28 May 2014
View Details

20 个免费的“网站构建中”的模板设计下载

网站还没上线前给用户一个友好的页面进行提示,这里为你提供 20 个免费的模板可供参考。 Launcher Download || Demo Paperlaunch Download || Demo Fotos Download || Demo Dark Under Construction Website Template Download || Demo Coming Soon Page Download || Demo Appology Download || Demo Alissa Download || Demo Glacier Download || Demo We the fashion coming soon template Download || Demo Sooner or later Download || Demo Launchtime Download || Demo Free coming soon page template – Taste the coffee Download || Demo Just Music Download || Demo Coming soon page Download || Demo Time’s a Wastin Download || Demo Counter Download || Demo Coming Soon page template Download || Demo Grand Download || Demo Ouch Under construction website template Download || Demo Pearl Download || Demo from:http://www.oschina.net/news/52215/coming-soon-under-construction-templates

龙生   28 May 2014
View Details

25 个具有视觉冲击力的应用仪表板设计概念

这里只是提供设计图,并没有设计的源码文件,不过有了它设计师就可以做出一模一样的效果来。 iPad Dashboard by Davide Pacilio PhotoLytics Dashboard UI by Balraj Chana Ladderboard by Vivek NowFilms by Aaron Sananes Main Trainer / Admin Dashboard by Vladimir Babić Answer Connect Dashboard by Joshua Iwata BikeSpike Dashboard Mockup by Brad Siefert Dashboard by Nuruzzaman Sheikh Spanish Flat Dashboard by Robin Marquez BeaconSoft Venue Page by Megan Fox Social Engagement Dash by Rovane Durso Dashboard by Olivier Zattoni Personal Dashboard by Florent Legrand Dashboard by Avinash Tripathi Task Management Design Direction by Brandon Termini Foreca Redesign by Rockstar Simple Analytics Dashboard […]

龙生   28 May 2014
View Details

jQuery验证控件jquery.validate.js使用说明+中文API

官网地址:http://bassistance.de/jquery-plugins/jquery-plugin-validation jQuery plugin: Validation 使用说明 转载自:http://blog.sina.com.cn/s/blog_608475eb0100h3h1.html   一导入js库 <script src="../js/jquery.js" type="text/javascript"></script> <script src="../js/jquery.validate.js" type="text/javascript"></script>   二、默认校验规则 (1)required:true                必输字段 (2)remote:"check.php"      使用ajax方法调用check.php验证输入值 (3)email:true                    必须输入正确格式的电子邮件 (4)url:true                        必须输入正确格式的网址 (5)date:true                      必须输入正确格式的日期 日期校验ie6出错,慎用 (6)dateISO:true                必须输入正确格式的日期(ISO),例如:2009-06-23,1998/01/22 只验证格式,不验证有效性 (7)number:true                 必须输入合法的数字(负数,小数) (8)digits:true                    必须输入整数 (9)creditcard:                   必须输入合法的信用卡号 (10)equalTo:"#field"          输入值必须和#field相同 (11)accept:                       输入拥有合法后缀名的字符串(上传文件的后缀) (12)maxlength:5               输入长度最多是5的字符串(汉字算一个字符) (13)minlength:10              输入长度最小是10的字符串(汉字算一个字符) (14)rangelength:[5,10]      输入长度必须介于 5 和 10 之间的字符串")(汉字算一个字符) (15)range:[5,10]               输入值必须介于 5 和 10 之间 (16)max:5                        输入值不能大于5 (17)min:10                       输入值不能小于10   三、默认的提示 messages: { required: "This field is required.", remote: "Please fix this field.", email: "Please enter a valid email address.", url: "Please enter a valid URL.", date: "Please enter a valid date.", dateISO: "Please […]

龙生   28 May 2014
View Details

VS2010 生成Xml格式的注释文档

项目, 属性, build, 勾选xml document file, 重新build, 即可生成xml注释文件, 然后还得找工具软件(看到anytao推荐SandCastle) 生成更易读的帮助文档. from:http://www.cnblogs.com/liuzhendong/archive/2011/09/28/2194002.html

龙生   28 May 2014
View Details

15 款优化表单的 jQuery 插件

网页上的表单提供给用户的一种交互的方式,用户输入数据,提交到服务器,等待后续的处理。这些表单在我们浏览的网页中随处可见,也容易被我们忽略。 比如,“联系我们”页面会提供一个表单给用户填写他们的信息和想提的建议或者问题,但是开发者往往只关注网站的设计和用户交互的内容,并不会注意到用户进 行交互的方式——表单。 以下整理的这个列表就是为 Web 开发者准备的,包括了 15 款优化表单的 jQuery 插件。希望大家能从中找到适合自己的 jQuery 插件,优化网页表单,更好的与用户进行交互。看完要记得和大家分享你的感想哦:) 一个精选的 AJAX Contact 表单 Demo || Tutorial 这个插件提供一个简单可靠的反馈表单。 创建一个霓虹灯闪烁效果的表单 Demo || Tutorial 不需要使用 Flash 就可以创建一个霓虹灯效果的表单。 高级 JavaScript 表单分类器 – TinyTable V3 Demo || Tutorial 第三代 TinyTable 表单分类脚本添加了搜索,列平均值和合计,记录号,查看所有函数视图和重置功能。大小接近 6 KB,非常轻量级。 完整经济业务表单 Demo || Tutorial Recurly.js 是完整经济业务表单非常安全,兼容 PCI,支持完全自定义的 CSS。 使用纯 CSS 创建表单,使用 jQuery 优化 Demo || Tutorial 在这个教程中,我们使用纯 CSS 来创建一个表单,使用 jQuery 插件来给表单元素加上皮肤,比如文本框,下拉列表,选项框。 Jq Transform Plug in Demo || Tutorial 这个插件是个 jQuery 样式插件,允许为表单元素加上皮肤。 PrettyCheckboxes Demo || Tutorial 这个脚本提供给想要在各种浏览器中保持一致外观的单选按钮的用户,使用这个脚本就可以保证常规输入的可用性。 使用 JavaScript 创建一个进度条 Demo || Tutorial 使用 jQuery 构建进度条到各种 UI 部件库和交互帮手,用户可以查看表单的完成程度。 jQuery 信用卡验证插件: Smart Validate Demo || Tutorial Smart Validate 是 jQuery 信用卡验证插件,使得信用卡验证变成一个简单的任务。它能保证用户输入有效的信用卡号。 Autotab: jQuery 自动 Tab 和过滤插件 Demo || Tutorial […]

龙生   26 May 2014
View Details
1 317 318 319 415