1. 程式人生 > >好久不寫sql,在這記錄一下sqlhelper類

好久不寫sql,在這記錄一下sqlhelper類

記錄一下,萬一以後忘了呢

直接程式碼上:

class SqlHelper
    {
        // 從配置檔案讀取資料庫連線串並返回
        //配置檔案裡app.config檔案
        //< connectionStrings >
        //    < add name = "SqlConn" connectionString = "server=資料庫地址;uid=使用者名稱;pwd=密碼;database=資料庫名" />
        //</ connectionStrings >
        private static string conn = ConfigurationManager.ConnectionStrings["SqlConn"].ConnectionString;
        
        /// <summary>
        /// 適用於增、刪、改操作的方法。
        /// </summary>
        /// <param name="sql">sql語句</param>
        /// <param name="parameters">sql語句中的引數</param>
        /// <returns></returns>
        public static int ExecuteNonQuery(string sql, params SqlParameter[] parameters)
        {
            using (SqlConnection sqlConn = new SqlConnection(conn))//建立SqlConnection資料庫連線物件
            {
                using (SqlCommand cmd = sqlConn.CreateCommand())//建立SqlCommand物件
                {
                    sqlConn.Open();//開啟資料庫
                    cmd.CommandText = sql;//sql語句
                    cmd.Parameters.AddRange(parameters);//引數賦值 
                    return cmd.ExecuteNonQuery();//返回受影響的行數
                }
            }
        }
        /// <summary>
        /// 執行查詢,並返回查詢所返回的結果集中第一行的第一列
        /// </summary>
        /// <param name="sql">sql語句</param>
        /// <param name="parameters">sql語句中的引數</param>
        /// <returns></returns>
        public static object ExecuteScalar(string sql, params SqlParameter[] parameters)
        {
            using (SqlConnection sqlConn = new SqlConnection(conn))//建立SqlConnection資料庫連線物件
            {
                using (SqlCommand cmd = sqlConn.CreateCommand())//建立SqlCommand物件
                {
                    sqlConn.Open();//開啟資料庫
                    cmd.CommandText = sql;//sql語句
                    cmd.Parameters.AddRange(parameters);//引數賦值 
                    return cmd.ExecuteScalar();//執行查詢,並返回查詢所返回的結果集中第一行的第一列
                }
            }
        }
        /// <summary>
        /// 查詢資料表的所有列,每個列都讀取;直到讀完所有行
        /// </summary>
        /// <param name="sql">sql語句</param>
        /// <param name="parameters">sql語句中的引數</param>
        /// <returns></returns>
        public static SqlDataReader ExecuteReader(string sql, params SqlParameter[] parameters)
        {
            SqlConnection sqlConn = new SqlConnection(conn);//這個方法不能關閉連線
            SqlCommand cmd = sqlConn.CreateCommand();
            sqlConn.Open();//開啟資料庫
            cmd.CommandText = sql;//sql語句
            cmd.Parameters.AddRange(parameters);//引數賦值 
            return cmd.ExecuteReader(CommandBehavior.CloseConnection);
        }
        /// <summary>
        /// 查詢並返回datatable資料集。
        /// </summary>
        /// <param name="sql">sql語句</param>
        /// <param name="parameters">sql語句中的引數</param>
        /// <returns></returns>
        public static DataTable ExecuteDataTable(string sql, params SqlParameter[] parameters)
        {
            using (SqlDataAdapter sda=new SqlDataAdapter(sql,conn))
            {
                DataTable dt = new DataTable();
                sda.SelectCommand.Parameters.AddRange(parameters);
                sda.Fill(dt);
                return dt;
            }
        }
    }

介紹一下ExecuteReader方法的使用

新建一個類:userInfo

public class userInfo
    {
        public string Name { get; set; }
        public string Address { get; set; }
    }

然後前端邏輯:

private List<userInfo> userList = new List<userInfo>();
        private void GetUserInfo()
        {
            string sql = "select name,address from userInfo";
            SqlDataReader sdr = SqlHelper.ExecuteReader(sql, null);
            while (sdr.Read())
            {
                userInfo user = new userInfo();
                user.Name = sdr["name"].ToString() != null ? sdr["name"].ToString() : "";
                user.Address = sdr["address"].ToString() != null ? sdr["address"].ToString() : "";
                userList.Add(user);
            }
        }