重构SQLHelper
来源:互联网 发布:ubuntu emacs 编辑:程序博客网 时间:2024/06/06 07:09
做新闻发布系统这个项目的时候又一次接触SQLHelper这个类,上次机房也遇到了这个类SQLHelper初见,这次与上次有些区别,对SQLHelper进行了重构。
using System.Data;using System.Data.SqlClient;using System.Configuration;namespace DAL{ public class SQLHelper { private SqlConnection conn = null; private SqlCommand cmd = null; private SqlDataReader sdr = null; public SQLHelper() //构造函数,实例化的时候应用 { string connStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString; //利用配置文件 conn = new SqlConnection(connStr); } private SqlConnection GetConn() { if (conn.State == ConnectionState.Closed) { conn.Open(); } return conn; } /// <summary> /// 执行不带参数的增删改SQL语句或存储过程 /// </summary> /// <param name="cmdText">增删改SQL语句或存储过程</param> /// <param name="ct">命令类型</param> /// <returns>int</returns> public int ExecuteNonQuery(string cmdText,CommandType ct) { int res; try { cmd = new SqlCommand(cmdText , GetConn ()); cmd.CommandType = ct; res = cmd.ExecuteNonQuery(); } catch (Exception ex) { throw ex; } finally { if (conn.State ==ConnectionState.Open ) { conn.Close(); } } return res; } /// <summary> /// 执行带参数的增删改SQL语句或存储过程 /// </summary> /// <param name="cmdText">增删改SQL语句或存储过程</param> /// <param name="ct">命令类型</param> /// <returns>int</returns> public int ExecuteNonQuery(string cmdText, SqlParameter[] paras, CommandType ct) { int res; using (cmd = new SqlCommand(cmdText , GetConn())) { cmd.CommandType = ct; cmd.Parameters.AddRange(paras); res = cmd.ExecuteNonQuery(); } return res; } /// <summary> /// 执行不带参数的 查询SQL语句或存储过程 /// </summary> /// <param name="cmdText">查询SQL语句或存储过程</param> /// <param name="ct">命令类型</param> /// <returns></returns> public DataTable ExecuteQuery(string cmdText, CommandType ct) { DataTable dt = new DataTable(); cmd = new SqlCommand(cmdText, GetConn()); cmd.CommandType = ct; using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection)) { dt.Load(sdr); } return dt; } /// <summary> /// 执行带参数的查询SQL语句或存储过程 /// </summary> /// <param name="cmdText">查询SQL语句或存储过程</param> /// <param name="paras">参数集合</param> /// <param name="ct">命令类型</param> /// <returns></returns> public DataTable ExecuteQuery(string cmdText, SqlParameter[] paras, CommandType ct) { DataTable dt = new DataTable(); cmd = new SqlCommand(cmdText, GetConn()); cmd.CommandType = ct; cmd.Parameters.AddRange(paras); using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection)) { dt.Load(sdr); } return dt; } }}
应用
using System.Data;using System.Data.SqlClient;using Model;namespace DAL{ /// <summary> /// 新闻类别表操作 /// </summary> public class categoryDAO { private SQLHelper sqlhelper = null; public categoryDAO() //构造函数 { sqlhelper = new SQLHelper(); } //取出当前所有新闻分类 public DataTable SelectAll() { DataTable dt = new DataTable(); string sql = "select * from category"; dt = sqlhelper.ExecuteQuery(sql, CommandType.Text); return dt; } /// <summary> ///添加新闻类别方法 /// </summary> /// <param name="caName">新闻类别名</param> /// <returns>返回bool</returns> public bool Insert(string caName) { bool flag = false; string sql = "insert into category (name) values (@caName)"; SqlParameter[] paras = new SqlParameter[] { new SqlParameter("@caName", caName) }; int res = sqlhelper.ExecuteNonQuery(sql, paras,CommandType.Text ); if (res > 0) { flag = true; } return flag; }//查询类别 public bool IsExists(string caName) { bool flag = false; string sql = "select * from category where [name]='" + caName + "'"; DataTable dt = sqlhelper.ExecuteQuery(sql,CommandType .Text ); if (dt.Rows.Count > 0) { flag = true; } return flag; } /// <summary> /// 修改类别(连同其下的新闻及评论) /// </summary> /// <param name="ca">实体类</param> /// <returns>bool</returns> public bool Update(categoryModel ca) { bool flag = false; string sql = "update category set [name]=@caName where id=@id"; SqlParameter[] paras = new SqlParameter[] { new SqlParameter("@caName", ca.Name), new SqlParameter ("@id",ca.ID)}; int res = sqlhelper.ExecuteNonQuery(sql, paras,CommandType.Text ); if (res > 0) { flag = true; } return flag; } //删除类别 public bool Delete(categoryModel ca) { bool flag = false; string sql = "delete from category where id=@id"; SqlParameter[] paras = new SqlParameter[] { new SqlParameter ("@id",ca.ID )}; int res = sqlhelper.ExecuteNonQuery(sql, paras, CommandType.Text); if (res > 0) { flag = true; } return flag; } }}
构造方法:又叫构造函数,其实就是对类进行初始化。构造方法与类同名,无返回值,也不需要void,在new时候调用。
所有类都有构造方法,如果你不编码则系统默认生成空的构造方法,若你有定义的构造方法,那么默认的构造方法就会生效。
上面就应用了构造方法,将一些重复的代码放在里面,等一实例化的时候构造方法就会生效,就减少了代码量,也提高了运行速率。
Using语句
SQLHelper类里面用到了using语句代替了try catch语句,这还是头一次使用,具体怎样用见下面这个链接:using语句
总结:知识就不不断在N上面加1的过程。
阅读全文
0 0
- SqlHelper初次重构
- 机房重构--sqlhelper
- SqlHelper重构
- 【机房重构】sqlHelper
- 【机房重构】SQLHelper
- SQLHelper重构
- 【机房重构】sqlhelper
- sqlhelper重构
- 机房重构--SQLHelper
- 重构SQLHelper
- 机房重构 之 SqlHelper
- 【.net基础】--SQLHelper重构
- 机房重构之SqlHelper
- 机房重构之SqlHelper
- 重构之SqlHelper类
- 从SQLHelper看代码重构
- 机房收费重构(四)-SqlHelper
- 【个人机房重构】——SqlHelper
- jquery系列教程4-事件操作全解
- HorizontalScrollView嵌套RecyclerView横向展示不全
- POJ 2330 Watchcow(欧拉回路)
- c++ ;类的继承(二)
- [practice]cpp primer 1 script
- 重构SQLHelper
- GitHub for windows中文乱码问题
- jquery系列教程5-动画操作全解
- 关于cygwin/msys/msys2/mingw/mingw64
- 2017百度之星资格赛1003(完全背包)
- DSP入门应该懂得57个问题
- Xshell 5常用命令(自己整理的,不全)
- 微信开发出现“该公众号暂时无法提供服务,请稍后再试”的坑
- JavaScript HTML DOM – 改变 CSS