首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

SqlHelper就这么简略

2012-08-07 
SqlHelper就这么简单一、SqlHelper作用:SqlHelper用于简化你对数据库重复的操作包括:数据库的连接,数据库的

SqlHelper就这么简单
一、SqlHelper作用:

SqlHelper用于简化你对数据库重复的操作包括:数据库的连接,数据库的增删改查。

也就是将原本复杂的事情简单化,说白了也就是一个类里面封装了一些方法,而这些方法大部分都是和数据库有关的。

二、SqlHelper的来源:

来源一:目前SqlHelper有很多版本,主要以微软一开始发布的SqlHelper类当然我也没有真正看过她的里面到底有什么。

来源二:那就是我们自己用的,自己来写这个类。


三、简单介绍这个类里面有的方法:

方法1:对于SqlHelper的一个构造方法:

        目的:初始化数据库的连接字符串和Sqlconnection

方法2:获取连接的一个方法

方法3:执行SQL语句增删改或是存储过程

方法4:执行SQL查询语句

总的来说也就是这么多的东西,但是一还要考虑一些其他的东西,比如我上篇文章说的SQL注入的问题这就需要对方法3和方法4进行重构也就是带参数的方法3和方法4.

好了废话不多说了。

四、实践

using System;using System.Collections.Generic;using System.Linq;using System.Text;//对数据库进行操作引入命名空间using System.Data;using System.Data.SqlClient;using System.Configuration;namespace DAL{    public class SQLhelper    {        /// 变量定义<summary>        /// </summary>        private SqlConnection conn = null;        private SqlCommand cmd = null;        private SqlDataReader sdr = null;        /// SQLhelper connStr 字符串的连接<summary>        /// </summary>        public SQLhelper()        {            string connStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;            conn = new SqlConnection(connStr);        }        /// 获取conn<summary>        /// </summary>        /// <returns>为什么要这样写有什么意义呢?</returns>        private SqlConnection GetConn()        {            if (conn.State == ConnectionState.Closed)            {                conn.Open();            }            return conn;        }        /// 该方法传入一个增删改SQL语句或是存储过程<summary>        /// </summary>        /// <param name="sql">要执行的增删改SQL语句或是存储过程</param>        /// <returns>返回更新的记录数</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>        /// 执行带参数的增删改语句或是存储过程        /// </summary>        /// <param name="sql">带参数的SQL语句或是存储过程</param>        /// <param name="paras">参数集合</param>        /// <returns></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;        }        /// 该方法传入一个查询SQL语句或是存储过程<summary>        /// 该方法传入一个查询SQL语句或是存储过程        /// </summary>        /// <param name="cmtText">SQL查询语句或存储过程</param>        /// <returns></returns>        public DataTable ExecuteQuery(string cmtText,CommandType ct)        {            DataTable dt = new DataTable();            cmd = new SqlCommand(cmtText, GetConn());            cmd.CommandType = ct;            //关系sdr的同是将会关闭conn            using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))            {                dt.Load(sdr);            }            return dt;        }        /// 执行带参数的SQL语句或是存储过程<summary>        /// 执行带参数的SQL语句或是存储过程        /// </summary>        /// <param name="cmdText">SQL语句或是存储过程</param>        /// <param name="paras"></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);            //关系sdr的同是将会关闭conn            using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))            {                dt.Load(sdr);            }            return dt;        }       }             }  


3楼as19901130昨天 20:41
楼主加油啊
Re: lzh1110昨天 21:10
回复as19901130n献丑了,其实我就是一个小菜鸟!希望大家多多指教!
2楼wall0619昨天 20:26
觉得注释少了点,明白人看了一看就知道,但是不明白的人也学就不会那么容易看懂了!
Re: lzh1110昨天 20:29
回复wall0619n以后会注意的!
1楼linlin80230619昨天 20:23
很详细嘛,LZ继续努力哈~
Re: lzh1110昨天 20:24
回复linlin80230619n谢谢!

热点排行