<正在工作室> nicStudio

永远也不要停下学习的脚步(大道至简至易)

 

asp.net使用SQLHelper操作数据库

使用控件,能够方便开发人员的开发和使用,但是很多情况下,不能使用控件来实现,所以很多情况都需要使用ADO.NET操作数据库中的数据,SQLHelper是将ADO.NET中对数据操作的类和对象进行的封装的一个类库,使用SQLHelper能够提高数据库操作的效率。

1.创建SQLHelper

SQLHelper类经常在数据库开发中使用,不仅封装了数据库操作,也提高了数据库操作的安全性,SQLHelper在微软的开发中和DEMO中经常被使用,SQLHelper通常用于多层设计,如果需要使用SQLHelper类,可以到微软官方下载最新的SQLHelper类,也可以自行编写SQLHelper类。如果自行创建SQLHelper类,则在解决方案管理器中新建一个类库,创建类库后,删除自动生成的Class1类,并创建一个新类,类名为SQLHelper.

如果使用下载的SQLHelper类,则可以单击解决方案管理器,单击右键,选择添加现有项,然后选择现有项目添加即可。在SQLHelper类下对数据操作进行封装,开发人员能够使用自己封装的类进行数据操作,示例代码如下所示

#region //数据库连接串

        private static readonly string database = “数据库”; //配置数据库信息

        private static readonly string uid = “用户名”; //配置用户名信息

        private static readonly string pwd = “密码”; //配置密码信息

        private static readonly string server = “服务器”; //配置服务器信息

        private static readonly string condb = "server='"+ server +"';database='" + database + "';uid=

        '" + uid + "';pwd='" + pwd + "';Max Pool Size=100000;Min Pool Size=0;

        Connection Lifetime=0;packet size=32767;Connection Reset=false; async=true"; //设置连接字串

        #endregion

        #region//DataAdapter方法 返回DataSet数据集

        /// <summary>

        /// DataAdapter方法 返回DataSet数据集

        /// </summary>

        /// <param name="sqlCmd">SQL语句</param>

        /// <param name="command">操作参数 枚举类型</param>

        /// <returns></returns>

        public static DataSet DataAdapter(string sqlCmd, SDACmd command,  //实现适配器

        string tabName, params SqlParameter[] paraList)

        {

            SqlConnection con = new SqlConnection(condb); //创建连接对象

            SqlCommand cmd = new SqlCommand(); //创建Command对象

            cmd.Connection = con; //使用连接对象

            cmd.CommandText = sqlCmd; //配置连接字串

            if (paraList != null)

            {

                cmd.CommandType = CommandType.Text; //配置Command类型

                foreach (SqlParameter para in paraList) //遍历参数

                { cmd.Parameters.Add(para); } //添加参数

            }

            SqlDataAdapter sda = new SqlDataAdapter(); //创建适配器

            switch (command) //查找条件

            {

                case SDACmd.select: //如果为select执行

                    sda.SelectCommand = cmd;

                    break;

                case SDACmd.insert: //如果为insert执行

                    sda.InsertCommand = cmd;

                    break;

                case SDACmd.update: //如果为update执行

                    sda.UpdateCommand = cmd;

                    break;

                case SDACmd.delete: //如果为delete执行

                    sda.DeleteCommand = cmd;

                    break;

            }

            DataSet ds = new DataSet(); //创建数据集

            sda.Fill(ds, tabName); //填充数据集

            return ds; //返回数据集

        }

在上述代码中,还需要通过一个枚举类型进行switch操作,枚举类型用于判断执行的操作,示例代码如下所示。

public enum SDACmd { select, delete, update, insert } //定义枚举类型

定义的枚举类型用于在程序中进行筛选操作,用于指定SQL语句执行的操作。在SQLHelper类中,还需要封装DataReader方法进行DataReader的封装和实现,开发人员能够使用SQLHelper类中的DataReader方法进行数据库的读取,示例代码如下所示。

public static SqlDataReader ExecReader(string sqlcmd, params SqlParameter[] paraList)

        {

            SqlConnection con = new SqlConnection(condb); //创建连接对象

            SqlCommand cmd = new SqlCommand(); //创建Command对象

            cmd.Connection = con; //使用连接

            cmd.CommandText = sqlcmd; //配置SQL语句

            if (paraList != null)

            {

                cmd.CommandType = CommandType.Text; //配置Command类型

                foreach (SqlParameter para in paraList)

                { cmd.Parameters.Add(para); } //添加参数

            }

            con.Open(); //打开连接

            SqlDataReader sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);

            return sdr;

        }

上述代码实现了DataReader对象,使用DataReader能够填充SqlDataReader对象并进行数据的循环输出。在ADO.NET中,通常需要执行SQL语句进行数据库的操作,在SQLHelper类中,同样需要封装执行SQL语句的操作以便能够快速执行数据操作。

        public static void ExecNonQuery(string sqlcmd, params SqlParameter[] paraList)

        {

            using (SqlConnection con = new SqlConnection(condb)) //创建连接对象

            {

                SqlCommand cmd = new SqlCommand(); //创建Command对象

                cmd.Connection = con; //使用连接

                cmd.CommandText = sqlcmd; //配置执行类型

                if (paraList != null)

                {

                    cmd.CommandType = CommandType.Text; //配置执行类型

                    foreach (SqlParameter para in paraList)

                    { cmd.Parameters.Add(para); } //添加参数

                }

                con.Open(); //打开数据连接

                cmd.ExecuteNonQuery(); //执行SQL语句

            }

        }

上述代码编写了SQLHelper类操作数据库的函数,通过执行函数并传递参数,即可实现数据库的插入、更新和删除。

2.使用SQLHelper

创建完成SQLHelper类后,需要为应用程序配置SQLHelper的基本属性,代码如下所示。

        private static readonly string database = "mytable"; //配置数据库

        private static readonly string uid = "sa"; //配置用户名

        private static readonly string pwd ="sa"; //配置用户会密码

        private static readonly string server = "local"; //配置服务器的值

上述代码为SQLHelper类配置了属性,当使用SQLHelper类时,系统会自动连接数据库,在完成使用后,系统会自动关闭数据库。如果需要在当前项目使用SQLHelper类,则需要添加引用来使用SQLHelper类,右击现有项目,在下拉菜单中选择【添加】选项,在【添加】选项中选择【现有项】选项,在弹出窗口中选择【项目】标签栏,就可以添加相同项目的类库

引用添加完毕,在使用SQLHelper页面的CS页面中,需要添加命名空间,命名空间的名称和创建类库的名称相同,如果需要更改名称,可以通过修改类库的属性来修改。示例代码如下所示。

using MYSQL;

引用完毕后,就可以执行SQL语句,使用SQLHelper执行SQL语句非常方便,下面代码演示了如何执行插入、删除操作。

            string strsql = "insert into mynews values ('SQLHelper插入标题')"; //编写SQL语句

            SQLHelper.ExecNonQuery(strsql); //执行SQL语句

上述代码运行后,则会执行插入操作,相比于ADO.NET,封装后的代码更加简便易懂,删除操作代码如下所示。

            string strsql2 = "delete form mynews where id=3"; //编写SQL语句

            SQLHelper.ExecNonQuery(strsql2); //执行SQL语句

当需要执行SELECT语句时,可以通过SQLHelper.DataAdapter获取数据,示例代码如下所示。

            string strsql = "select * from mynews where id=3"; //编写SQL语句

            DataSet ds = SQLHelper.DataAdapter(strsql, SQLHelper.SDACmd.select, "mydatatable");

上述代码通过SQLHelper.DataAdapter获取数据,并创建了一个mydatatable虚拟表,填充DataSet对象。当需要获取DataSet对象中的数据时,和普通的DataSet对象一样。SQLHelper封装了ADO.NET中的许多方法,为开发人员提高了效率,同时也增加了安全性和模块化的特性。

注意:上述代码中的SQLHelper类能够执行的是SQL语句,如果需要执行存储过程,则需要更改SQLHelper类中的相应的CommandType属性的值。

posted on 2011-01-19 15:08  nicStudio  阅读(3588)  评论(0编辑  收藏  举报

导航