SqlHelp类


using System;

using System.Collections.Generic;

using System.Text;

using System.Configuration;

using System.Data.SqlClient;

using System.Data;

using System.Reflection;

namespace demo_DevExpress_

{

public class SqlHelp
{
    ///   
    /// 获取连接数据库字符串  
    ///   
    //   private static string connStr = ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString; 

    private static string connStr = "Data Source=.;Initial Catalog=text;Integrated Security=True";
    ///   
    /// 对连接执行 Transact-SQL 语句并返回受影响的行数  
    ///   
    /// 对数据库表进行Insert,Update和Delete语句  
    /// sql语句参数  
    /// 返回值为该命令所影响的行数  
    public static int ExecuteNonQuery(CommandType cmdTye, string sql, params SqlParameter[] parameters)
    {
        using (SqlConnection conn = new SqlConnection(connStr))
        {
            conn.Open();
            using (SqlCommand cmd = conn.CreateCommand())
            {
                cmd.CommandText = sql;
                cmd.CommandType = cmdTye;

                cmd.Parameters.AddRange(parameters);

                int i = cmd.ExecuteNonQuery();

                return i;


            }
        }
    }



    ///   
    /// 执行查询,并返回查询所返回的结果集中第一行的第一列。一般用于SQL聚合函数,如:count,Max,min,avg。。  
    ///   
    /// 要执行的sql语句  
    /// sql语句的参数  
    /// 返回查询所返回的结果集中第一行的第一列。忽略其他列或行。返回的最大字符数为 2033 个字符。  
    public static object ExecuteScalar(CommandType cmdTye, string sql, params SqlParameter[] parameters)
    {
        using (SqlConnection conn = new SqlConnection(connStr))
        {
            conn.Open();
            using (SqlCommand cmd = conn.CreateCommand())
            {
                cmd.CommandText = sql;
                cmd.CommandType = cmdTye;
                cmd.Parameters.AddRange(parameters);

                //ExcuteScalar()的返回值是object类型的(如果想返回int类型的数据,可先将cmd.ExecuteSalar()转化成int类型再进行返回)    
                return cmd.ExecuteScalar();

            }

        }
    }

    ///   
    /// DataSet是将查询结果填充到本地内存中,这样即使与连接断开,服务器的连接断开,都不会影响数据的读取。但是它也有一个坏处,就是只有小数据量才能往里面存放,数据量大了就给你的本地内存冲爆了。电脑会卡死去。大数据量的话还得用SqlDataReader    
    ///   
    /// 要执行的sql语句  
    /// sql语句的参数  
    /// 返回值是一个DataSet  
    public static DataSet ExecuteDataSet(CommandType cmdTye, string sql, params SqlParameter[] parameters)
    {
        using (SqlConnection conn = new SqlConnection(connStr))
        {
            conn.Open();
            using (SqlCommand cmd = conn.CreateCommand())
            {
                cmd.CommandText = sql;
                cmd.CommandType = cmdTye;
                cmd.Parameters.AddRange(parameters);

                DataSet ds = new DataSet();
                using (SqlDataAdapter adapter = new SqlDataAdapter(cmd))
                {
                    //将cmd的执行结果填充到ds里面  
                    adapter.Fill(ds);
                    return ds;
                }

            }
        }
    }

    ///   
    /// 执行查询,并将查询的结果以DataTable的形式返回  
    ///   
    /// 要执行的sql语句  
    /// sql语句的参数  
    /// 返回值是一个DataTable  
    public static DataTable ExecuteDataTable(CommandType cmdTye, string sql, params SqlParameter[] parameters)
    {
        using (SqlConnection conn = new SqlConnection(connStr))
        {
            conn.Open();
            //换一种写法,与上面的几种写法稍稍有点不同  
            using (SqlCommand cmd = new SqlCommand(sql, conn))
            {
                cmd.CommandText = sql;
                cmd.CommandType = cmdTye;
                cmd.Parameters.AddRange(parameters);

                DataTable dt = new DataTable();
                using (SqlDataAdapter adapter = new SqlDataAdapter(cmd))
                {
                    adapter.Fill(dt);
                    return dt;
                }

            }
        }
    }

    ///   
    /// 将查询的结果转换成一个T类型的对象  
    ///   
    /// 泛型类T  
    /// 要执行的sql语句  
    /// sql语句的参数  
    /// T类型的对象集合  
    public static List ExecuteClass(CommandType cmdTye, string sql, params SqlParameter[] parameters)
    {
        List list = new List();
        using (SqlConnection conn = new SqlConnection(connStr))
        {
            conn.Open();
            using (SqlCommand cmd = conn.CreateCommand())
            {
                cmd.CommandText = sql;
                cmd.CommandType = cmdTye;
                cmd.Parameters.AddRange(parameters);

                DataSet ds = new DataSet();

                using (SqlDataAdapter adapter = new SqlDataAdapter(cmd))
                {
                    adapter.Fill(ds);
                }

                //获取ds里面的第0个表(索引从0开始)  
                DataTable dt = ds.Tables[0];

                //获取T类型的所有公有属性  
                PropertyInfo[] tMembers = typeof(T).GetProperties();

                //遍历dt表的所有行                      
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    //创建一个泛型T类型的对象t。  
                    T t = Activator.CreateInstance();

                    //遍历dt表的所有列  
                    for (int j = 0; j < dt.Columns.Count; j++)
                    {
                        //遍历T类型的所有公有属性  
                        foreach (PropertyInfo tMember in tMembers)
                        {
                            //如果发现dt表中的列名与遍历出来的T类型属性名相同  
                            if (dt.Columns[j].ColumnName.ToUpper().Equals(tMember.Name.ToUpper()))
                            {
                                //将dt.Rows[i][j]赋值给t对象的tMember成员  
                                if (dt.Rows[i][j] != DBNull.Value)
                                {
                                    tMember.SetValue(t, dt.Rows[i][j], null);
                                }
                                else
                                {
                                    tMember.SetValue(t, null, null);
                                }
                                break;//;//注意这里的break是写在if语句里面的,意思就是说如果列名和属性名称相同并且已经赋值了,那么我就跳出foreach循环,进行j+1的下次循环    
                            }

                        }
                    }
                    list.Add(t);
                }
                return list;

            }
        }
    }

    ///   
    /// 直接将查询到的数据(表)转换成一个泛型类  
    ///   
    /// 泛型类T  
    /// 要执行的sql语句  
    /// sql语句的参数  
    /// T类型的对象的集合  
    /// 

    /*
     public static List SelectDataToList(string cmdText, params SqlParameter[] parameters)  
     {  
         DataTable dt = new DataTable();  
         using (SqlConnection conn = new SqlConnection(connStr))  
         {  
             conn.Open();  
             using (SqlCommand cmd = conn.CreateCommand())  
             {  
                 cmd.CommandText = cmdText;  
                 cmd.Parameters.AddRange(parameters);  

                 using (SqlDataAdapter adapter = new SqlDataAdapter(cmd))  
                 {  

                     adapter.Fill(dt);  
                 }  
             }  
         }  

         IList list = new List(); //实例化一个泛型类  

         var tMembers = typeof(T).GetProperties(); //获取T类的所有公共属性  

         for (int i = 0; i < dt.Rows.Count; i++) //遍历dt表的行  
         {  
             T t = Activator.CreateInstance();//创建T类型的实例  

             for (int j = 0; j < dt.Columns.Count; j++) //遍历dt表的列  
             {  
                 foreach (var tMember in tMembers) //遍历T类的公共方法  
                 {  
                     if (tMember.Name.ToUpper() == dt.Columns[j].ColumnName.ToUpper()) //如果属性的名字与列的名字一致,则赋值  
                     {  
                         if (dt.Rows[i][j] != null)  
                         {  
                             tMember.SetValue(t, dt.Rows[i][j], null);  
                         }  
                         else  
                         {  
                             tMember.SetValue(t, null, null);  
                         }  
                         break;  
                     }  
                 }  
             }  
             list.Add(t);  
         }  
         return list.ToList();  

     }  
*/
    /* 
    public static object ExecuteDataReader(string sql, params SqlParameter[] paramters) 
    { 
        using (SqlConnection conn = new SqlConnection(connStr)) 
        { 
            conn.Open(); 
            using(SqlCommand cmd=new SqlCommand(sql,conn)) 
            { 
                cmd.Parameters.AddRange(paramters); 
                using (SqlDataReader dr = cmd.ExecuteReader()) 
                { 
                    if (dr.Read()==true) 
                    {  
                         
                    } 
                } 
            } 
        } 
    } 
    */
    ///   
    /// 从数据库取值赋给.net类的对象属性,如果值为DBNull.Value,则将值转换成.Net认的null  
    ///   
    ///   
    ///   
    public static object FromDbValue(object value)
    {
        if (value == DBNull.Value)
        {
            return null;
        }
        else
        {
            return value;
        }
    }

    ///   
    /// 将.net类对象的属性值插入到数据库,如果类的属性值为null,则将值转换成数据库认的DBNull.value  
    ///   
    ///   
    ///   
    public static object ToDbValue(object value)
    {
        if (value == null)
        {
            return DBNull.Value;
        }
        else
        {
            return value;
        }

    }
}

}


Here is an example of AppleScript: tell application "Foo" beep end tell

你可能感兴趣的:(SqlHelp类)