mysql q4m_Mysql Q4M 队列操作封装(二)
/// /// 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 队列操作封装(二)相关推荐
- MySQL数据库用户管理操作(二)
文章目录 一.数据表操作 1.克隆表 1.1 先克隆表,再克隆数据 1.2 克隆表的数据并创建表 2.清空表 2.1 delete清空表 2.2 truncate清空表 2.3 drop.trunca ...
- hive 操作(二)——使用 mysql 作为 hive 的metastore
Hive 基础及安装 Hive 操作(一) hive 操作(二)--使用 mysql 作为 hive 的metastore hive 操作(三)--hive 的数据模型 hive 操作(四) hive ...
- 封装mysql数据库_快速掌握 Mysql数据库对文件操作的封装
快速掌握 Mysql数据库对文件操作的封装 在查看Mysql对文件的操作中,它在不同的操作系统上对文件的操作,除了使用标准C运行库函数,包括open.close.seek等,在Win32下的文件和目录 ...
- mysql 操作封装
mysql 操作封装 1.同步操作mysql import pymysql from sqlalchemy import create_engine import pandas as pd class ...
- php中使用redis队列操作实例代码
例1,入队操作: <?php $redis = new Redis(); $redis->connect('127.0.0.1',6379); while(True){try{$value ...
- mysql 伪表查询语句_MySql系列05:MySql中DQL查询操作
1.表的准备 准备四张表: dept(部门表).emp(员工表).salgrade(薪资等级表).bonus(奖金表) create table DEPT( DEPTNO int(2) not nul ...
- Java数据库开发与应用之MySQL数据库、JDBC操作数据库、C3P0数据库连接池,Java反射等
MySQL数据库,JDBC接口,MyBatis框架等,掌握的数据的存放和管理. Java数据库开发基础,介绍MySQL数据库.JDBC操作数据库.C3P0数据库连接池,Java反射等内容,进行油画商城 ...
- SRIO学习(七)——Direct I/O 操作(二)
Direct I/O 操作(二) [上回书说到,LSU的CC位能够表示正在进行的传输的状态.] 中断和LSU释放 LSU的CC位能够表示正在进行的传输的状态,自然也能显示出执行过程中的错误,而且一点出 ...
- Linux下Mysql数据库的基础操作
Linux下Mysql数据库的基础操作 一.Mysql数据介绍 二.数据库相关术语介绍 1.数据库相关名词 2.相关术语介绍 三.Mysql数据库的管理 1.创建数据库用户 2.查询用户状态 3.修改 ...
最新文章
- javascript捕获ocx事件
- 深度学习-Tensorflow2.2-批标准化简介-14
- HTML特效之团购页面效果
- vs android 压缩,Android Studio是否压缩classes.dex文件?
- 【AI视野·今日CV 计算机视觉论文速览 第170期】Mon, 25 Nov 2019
- python编程书籍资料整理大全
- Spring(二)--FactoryBean、bean的后置处理器、数据库连接池、引用外部文件、使用注解配置bean等...
- poj 3414 Pots(广搜BFS+路径输出)
- 损坏的主文件表_启动失败时如何手动修复Windows 10的MBR(主引导记录)
- [渝粤教育] 西南科技大学 大学物理 在线考试复习资料
- Android中Intent传递Java对象的方法
- 编译错误:GL/glew.h, GL/glut.h, EGL/egl.h没有那个文件或目录
- Java-多线程第二篇多线程相关认识(2)
- 华为S5700交换机堆叠
- python水果超市管理系统流程图_超市管理流程图-超市管理系统业务流程图
- Qt VS Tools插件官方下载及安装
- matlab分组形式条形图,Matplotlib带标签的分组条形图
- word文件怎么另存
- 滴滴顺风车女乘客遇害;华为法律应对澳 5G 禁令;苹果研发新背板技术|极客头条...
- 深圳及周边适合小朋友(3岁以下)玩的地方总结及交流[转载]
热门文章
- BJFU-ACM 12月8日月赛官方题解
- SQLServer 优化SQL语句:in 和not in的替代方案
- raspberry pi_如何使用Raspberry Pi构建WiFi相框
- 想唱你就唱卡拉ok_如何将电唱机与其他设备连接起来
- dreamhost 优惠码_DreamHost如何通过OpenStack重塑自己
- 面试 | 程序猿面试,Elasticsearch被坑被虐的体无完肤...
- Kali Linux 自定义分辨率
- HTML5 Canvas中绘制线段
- Vrep线程之间的切换
- 怎样在vrep child scirpt里定义自己写的函数