码迷,mamicode.com
首页 > 数据库 > 详细

自己封装的SqlHelper

时间:2014-09-28 18:58:24      阅读:232      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   os   ar   文件   数据   sp   

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Text;

namespace 自己封装的SqlHelper
{

    public static class SqlHelper
    {

        //App.config 配置文件的内容
        //<?xml version="1.0" encoding="utf-8" ?>
        //<configuration>
        //  <connectionStrings>
        //   <add name="sqlConnStr" connectionString="Data Source=.;initial Catalog=;integrated security =true;"/>
        //  </connectionStrings>
        //</configuration>

        /// 通过配置文件来获取数据库链接字符串
        private static readonly string conStr = ConfigurationManager.ConnectionStrings["sqlConnStr"].ConnectionString;
        //private  static readonly string  constr = "Data Source=.;initial Catalog=;integrated security =true;";


        /// <summary>
        /// insert(插入)、delete(删除)、update(更新)
        /// </summary>
        /// <param name="sql">Sql命令语句</param>
        /// <param name="pms">执行命令所用参数的集合</param>
        /// <returns></returns>
        public static int ExecuteNonQuery(string sql, params SqlParameter[] pms)
        {
            using (SqlConnection con = new SqlConnection(conStr))
            {
                using (SqlCommand cmd = new SqlCommand(sql, con))
                {
                    //可变参数pms如果用户不传递的时候,是一个长度为0的数组。不是null。
                    if (pms != null)
                    {
                        cmd.Parameters.AddRange(pms);
                    }
                    con.Open();
                    return cmd.ExecuteNonQuery();
                }
            }
        }


        /// <summary>
        /// 返回单个值,第一行第一列,返回单个值的
        /// </summary>
        /// <param name="sql">Sql命令语句</param>
        /// <param name="pms">执行命令所用参数的集合</param>
        /// <returns></returns>
        public static object ExecuteScalar(string sql, params SqlParameter[] pms)
        {
            using (SqlConnection con = new SqlConnection(conStr))
            {
                using (SqlCommand cmd = new SqlCommand(sql, con))
                {
                    //可变参数pms如果用户不传递的时候,是一个长度为0的数组。不是null。
                    if (pms != null)
                    {
                        cmd.Parameters.AddRange(pms);
                    }
                    con.Open();
                    return cmd.ExecuteScalar();
                }
            }
        }
        /// <summary>
        /// select 查询多行多列,调用ExecuteReader()来实现。注意:在返回的时候,reader要调用Close()来关闭对象。
        /// </summary>
        /// <param name="sql">Sql命令语句</param>
        /// <param name="pms">执行命令所用参数的集合</param>
        /// <returns></returns>
        public static SqlDataReader ExecuteReader(string sql, params SqlDataReader[] pms)
        {
            SqlConnection con = new SqlConnection(conStr);
            {
                using (SqlCommand cmd = new SqlCommand(sql, con))
                {
                    if (pms != null)
                    {
                        cmd.Parameters.AddRange(pms);
                    }
                    try
                    {
                        con.Open();
                        //参数System.Data.CommandBehavior.CloseConnection表示当外部调用该DataReader对象的Close()方法时,在该Close()方法内部,会自动调用与该DataReader相关联的Connection的Close()方法
                        return cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
                    }
                    catch
                    {
                        ////这里的关闭不要写在finally中,因为需要return 一个SqlDataReader
                        con.Close();////出错误时,将数据库链接及时关闭,放入“池”中
                        con.Dispose();
                        throw;////继续往上面抛出错误信息
                    }

                }
            }
        }
        /// <summary>
        /// 返回结果集DataTable
        /// </summary>
        /// <param name="sql">Sql命令语句</param>
        /// <param name="pms">执行命令所用参数的集合</param>
        /// <returns></returns>
        public static DataTable ExecuteTable(string sql, params SqlParameter[] pms)
        {
            DataTable dt = new DataTable();
            using (SqlDataAdapter adapter = new SqlDataAdapter(sql, conStr))
            {
                adapter.Fill(dt);
            }
            return dt;
        }
    }

}

 

自己封装的SqlHelper

标签:style   blog   color   io   os   ar   文件   数据   sp   

原文地址:http://www.cnblogs.com/Andrew2014/p/3998353.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!