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