///     /// Q4M队列操作基类     ///     ///     /// Author:luyifeng     /// Createday:2013 05 02     public abstract class MyQ4M : IQ4M     {         private bool _isGetData = false;         private MySqlConnection _conn = null;         private readonly string _connectionKey = null;         public T QueueItem { get; set; }         protected GanjiQ4M(string connectionKey)         {             _connectionKey = connectionKey;         }         public T First()         {             Dispose();             GetDb();             QueueItem = GetItem();             if (QueueItem != null)             {                 _isGetData = true;             }             return QueueItem;         }         protected abstract string GetItemSql();         private T GetItem()         {             string strSql = GetItemSql();             if (string.IsNullOrEmpty(strSql))             {                 throw new Exception("没有设置获取队列的sql语句");             }             var cmd = new MySqlCommand(strSql, _conn);             using (IDataReader reader = cmd.ExecuteReader())             {                 if (reader.Read())                 {                     var que = EntityHelper.TransformPoco(reader);                     return que;                 }             }             return default(T);         }         public void Remove()         {             //第一条数据出队             const string strSql = "select queue_end();";             ExcuteSql(strSql);             //状态恢复             ClearState();         }         public void Rollback()         {             //回滚数据             const string strSql = "select queue_abort();";             ExcuteSql(strSql);             //状态恢复             ClearState();         }         private void ExcuteSql(string sql)         {             var cmd = new MySqlCommand(sql, _conn);             cmd.ExecuteNonQuery();         }         private void GetDb()         {             if (string.IsNullOrEmpty(_connectionKey))             {                 throw new Exception("没有配置连接字符串key");             }             var connectionString = System.Configuration.ConfigurationManager.ConnectionStrings[_connectionKey].ConnectionString;             _conn = new MySqlConnection(connectionString);             _conn.Open();         }         private void ClearState()         {             _isGetData = false;             QueueItem = default(T);             if (_conn != null)             {                 if (_conn.State == ConnectionState.Open)                 {                     _conn.Close();                 }                 _conn.Dispose();             }         }         public void Dispose()         {             if (_isGetData)             {                 Rollback();             }         }             }

mysql q4m_Mysql Q4M 队列操作封装(二)相关推荐

  1. MySQL数据库用户管理操作(二)

    文章目录 一.数据表操作 1.克隆表 1.1 先克隆表,再克隆数据 1.2 克隆表的数据并创建表 2.清空表 2.1 delete清空表 2.2 truncate清空表 2.3 drop.trunca ...

  2. hive 操作(二)——使用 mysql 作为 hive 的metastore

    Hive 基础及安装 Hive 操作(一) hive 操作(二)--使用 mysql 作为 hive 的metastore hive 操作(三)--hive 的数据模型 hive 操作(四) hive ...

  3. 封装mysql数据库_快速掌握 Mysql数据库对文件操作的封装

    快速掌握 Mysql数据库对文件操作的封装 在查看Mysql对文件的操作中,它在不同的操作系统上对文件的操作,除了使用标准C运行库函数,包括open.close.seek等,在Win32下的文件和目录 ...

  4. mysql 操作封装

    mysql 操作封装 1.同步操作mysql import pymysql from sqlalchemy import create_engine import pandas as pd class ...

  5. php中使用redis队列操作实例代码

    例1,入队操作: <?php $redis = new Redis(); $redis->connect('127.0.0.1',6379); while(True){try{$value ...

  6. mysql 伪表查询语句_MySql系列05:MySql中DQL查询操作

    1.表的准备 准备四张表: dept(部门表).emp(员工表).salgrade(薪资等级表).bonus(奖金表) create table DEPT( DEPTNO int(2) not nul ...

  7. Java数据库开发与应用之MySQL数据库、JDBC操作数据库、C3P0数据库连接池,Java反射等

    MySQL数据库,JDBC接口,MyBatis框架等,掌握的数据的存放和管理. Java数据库开发基础,介绍MySQL数据库.JDBC操作数据库.C3P0数据库连接池,Java反射等内容,进行油画商城 ...

  8. SRIO学习(七)——Direct I/O 操作(二)

    Direct I/O 操作(二) [上回书说到,LSU的CC位能够表示正在进行的传输的状态.] 中断和LSU释放 LSU的CC位能够表示正在进行的传输的状态,自然也能显示出执行过程中的错误,而且一点出 ...

  9. Linux下Mysql数据库的基础操作

    Linux下Mysql数据库的基础操作 一.Mysql数据介绍 二.数据库相关术语介绍 1.数据库相关名词 2.相关术语介绍 三.Mysql数据库的管理 1.创建数据库用户 2.查询用户状态 3.修改 ...

最新文章

  1. 如何将Numpy加速700倍?用 CuPy 呀
  2. 在你的 Rails App 中开启 ETag 加速页面载入同时节省资源
  3. Py之docx:Python库之docx简介、安装、使用方法详细攻略
  4. uboot启动过程总结的思维导图
  5. 【网络】c++ socket 学习笔记(一)
  6. 两相电机倒顺开关的接法是什么?
  7. 使用MDT2012部署WindowsLinux操作系统(4)
  8. apue.h头文件内容
  9. 抓取mooc中国随笔
  10. 神经网络在线和离线的区别,神经网络网站
  11. css 字体压缩 fonttools
  12. js处理的8种跨域方法
  13. 企业如何选择?网站建设中常见的几种类型
  14. android 图标弹跳动画,动效教程 | 5 分钟快速制作弹跳加载小动画
  15. MarkdownPad2安装汉化与注册码
  16. iOS7+系统自带条码扫描
  17. 274. H 指数----中等
  18. Android 高德地图定位和导航
  19. 全国优秀计算机动画作品,全国“xx杯”计算机应用基础类说课大赛优秀作品:同步动画教学课件.pptx...
  20. mac os 上启用简单http file server web 文件服务器

热门文章

  1. android如何处理大图片大小,android-如何将图像大小减小到1MB
  2. 软件技术债务是什么_为什么我爱技术债务
  3. (4)Node.js 安装
  4. x264的交叉编译和移植
  5. 历史 | FireFox 是如何从辉煌走向衰落的
  6. Bootstrap列表组
  7. Bootstrap 堆叠式导航
  8. Bootstrap表格样式
  9. es6 Promise 的含义
  10. 广东计算机学会 信息学省初赛,报名丨2019第36届全国信息学奥林匹克竞赛于广州二中举办!...