黑马程序员技术交流社区

标题: ado.net中的封装 DataSet 强类型 2 [打印本页]

作者: 杨礼文    时间: 2012-4-21 21:30
标题: ado.net中的封装 DataSet 强类型 2
接  ado.net中的封装 DataSet 强类型 1

封装 (目的是为了使代码更简洁 更容易让人看懂)
class SQLHelper
{
       //ExecuteNonQuery("insert into t(f1,f2) values (@f1,@f2)",p1,p2,p3,p4)
        public static int ExecuteNonQuery(string sql,params SqlParameter[]  parameters )
        {                                       //params SqlParameter[]  parameters  可变参数
            string connStr = ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString;
            //ConfigurationManager  提供客户端应用程序配置文件的访问
            //ConnectionStrings  获取当前应用程序默认配置文件的数据  ConnStr 名字  
            //ConnectionString   获取或设置连接字符串
            using (SqlConnection conn = new SqlConnection(connStr))  //创建连接
            {
                conn.Open();
                using (SqlCommand cnd = conn.CreateCommand())
                {
                    cnd.CommandText = sql;  //别加引号!!! sql 是传过来的 SqlCommand语句
                    foreach (SqlParameter parameter in parameters) //作用是往SqlCommand语句中添加参数
                    {
                        cnd.Parameters.Add(parameter);
                        // parameter是局部变量 等于传过来的变量 new SqlParameter("Name","tom"), new SqlParameter("Age",30)
                        //cnd.Parameters 这个是集合   cnd.Parameters.Add() 向这个集合里加对象
                        //new SqlParameter("Name","tom") 这个是对象,
                        //这个对象的作用就是,Name 赋值为 tom
                        //也可以这样理解
                        //cnd.Parameters 就是一个组, SqlParameter组员类(里面是对组员的一些要求) new SqlParameter() 找到一个满足要求的人员,
                        //cnd.Parameters.Add(new SqlParameter()) 将组员加入到组里
                      }
                    return cnd.ExecuteNonQuery();
                    //cnd.ExecuteNonQuery(); 非查询,对添加,修改,删除作用 返回受影响的行数 int类型
                }
            }
        }
        public static object ExecuteScalar(string sql , params SqlParameter[] parameters)
        {
            string connStr = ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString;
            using (SqlConnection conn = new SqlConnection(connStr))  //创建连接
            {
                conn.Open();
                using (SqlCommand cnd = conn.CreateCommand())
                {
                    cnd.CommandText = sql;  //别加引号!!!
                    foreach (SqlParameter parameter in parameters)
                    {
                        cnd.Parameters.Add(parameter);
                    }
                    return cnd.ExecuteScalar();
                    //执行查询 并返回查询所返回的结果集中第一行第一列 object类型
                }
             }
         }
        //不能用这个方法 因为连接关闭后 SqlDataReader无法使用了
       public static SqlDataReader ExecuteReader(string sql ,params SqlParameter[] parameters)
        //返回值是SqlDataReader类型的
        {
            string connStr = ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString;
            using (SqlConnection conn = new SqlConnection(connStr))
            {
                conn.Open();
                using (SqlCommand cnd = conn.CreateCommand())
                {
                    cnd.CommandText = sql;
                    foreach(SqlParameter parameter in parameters)
                    {
                        cnd.Parameters.Add(parameter);
                    }
                    return cnd.ExecuteReader();
                }
            }
        }
       public static DataTable ExecuteDataTable(string sql,params SqlParameter[] parameters)
        {
            string connStr = ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString;
            using (SqlConnection conn = new SqlConnection(connStr))
            {
                conn.Open();
                using(SqlCommand cnd = conn.CreateCommand())
                {
                    cnd.CommandText = sql;
                    foreach(SqlParameter parameter in parameters)
                    {
                        cnd.Parameters.Add(parameter);
                    }
                    DataSet dataSet = new DataSet();
                    SqlDataAdapter adapter = new SqlDataAdapter(cnd);
                    adapter.Fill(dataSet);
                    return dataSet.Tables[0];
                }
            }
        }
}

作者: 杨礼文    时间: 2012-4-21 21:35
内容太长   这是连接 http://bbs.itheima.com/home.php? ... orward=1&id=652
作者: ︻◣㊣袏邊愛☆    时间: 2012-4-24 18:30
学习了谢谢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2