public abstract class SQLHelper { //只讀的靜態數據庫鏈接字符串 //需添加引用System.Configuration; public static readonly string connString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString; //public static readonly string connString = "server=.;database=Weight;uid=sa;pwd=1"; #region 執行 增 刪 改 /// <summary> /// 執行 增 刪 改 /// </summary> /// <param name="sql">要執行的SQL</param> /// <param name="param">參數</param> /// <returns>影響行數</returns> public static int ExecuteNonQuery(string sql, params SqlParameter[] param) { //實例化鏈接對象,並指定鏈接字符串,自動釋放資源,不用關閉 using (SqlConnection conn = new SqlConnection(connString)) { //實例化命令對象,指定sql,與鏈接對象 using (SqlCommand cmd = new SqlCommand(sql, conn)) { //若是有參數 if (param != null) { //批量添加參數 cmd.Parameters.AddRange(param); } //打開鏈接 conn.Open(); //執行sql並返回影響行數 return cmd.ExecuteNonQuery(); } } } /// <summary> /// 返回首行首列對象 /// </summary> /// <param name="sql">要執行的SQL</param> /// <param name="param">參數</param> /// <returns>首行首列對象</returns> public static object ExecuteScalar(string sql, params SqlParameter[] param) { //實例化鏈接對象,並指定鏈接字符串,自動釋放資源,不用關閉 using (SqlConnection conn = new SqlConnection(connString)) { //實例化命令對象,指定sql,與鏈接對象 using (SqlCommand cmd = new SqlCommand(sql, conn)) { //若是有參數 if (param != null) { //批量添加參數 cmd.Parameters.AddRange(param); } //打開鏈接 conn.Open(); //執行sql並返回影響行數 return cmd.ExecuteScalar(); } } } #endregion #region 執行 查詢 /// <summary> /// 執行 查詢 /// </summary> /// <param name="sql">要執行的SQL</param> /// <param name="param">參數</param> /// <returns>數據集</returns> public static SqlDataReader ExecuteReader(string sql, params SqlParameter[] param) { //實例化鏈接對象,並指定鏈接字符串 SqlConnection conn = new SqlConnection(connString); //實例化命令對象,指定sql,與鏈接對象 using (SqlCommand cmd = new SqlCommand(sql, conn)) { //若是有參數 if (param != null) { //批量添加參數 cmd.Parameters.AddRange(param); } //打開鏈接 conn.Open(); //執行sql並返回一個只進只讀保持SQL鏈接的結果集,若是將返回的SqlDataReader關閉時也將關閉鏈接 return cmd.ExecuteReader(CommandBehavior.CloseConnection); } } #endregion #region 完成數據的查詢,返回DataTable /// <summary> /// 完成數據的查詢,返回DataTable /// </summary> /// <param name="sql">要執行的sql</param> /// <param name="param">參數</param> /// <returns>DataTable</returns> public static DataTable GetTable(string sql, params SqlParameter[] param) { //實例化鏈接對象,並指定鏈接字符串,自動釋放資源,不用關閉 using (SqlConnection conn = new SqlConnection(connString)) { //數據適配器 SqlDataAdapter adp = new SqlDataAdapter(sql, conn); if (param != null) { //批量添加參數 adp.SelectCommand.Parameters.AddRange(param); } //填充並返回數據表 DataTable dt = new DataTable(); adp.Fill(dt); return dt; } } #endregion #region 根據sql得到List集合 /// <summary> /// 根據sql得到List集合 /// </summary> public static List<T> GetList<T>(String sql, params SqlParameter[] param) where T : class,new() { List<T> entities = new List<T>(); using (SqlDataReader sdr = SQLHelper.ExecuteReader(sql)) { while (sdr.Read()) { T entity = new T(); //得到當前實體類型信息 Type type = typeof(T); //遍歷結果集中的每一列 for (int i = 0; i < sdr.FieldCount; i++) { //得到列名 String columnName = sdr.GetName(i); //根據列名取得屬性信息 PropertyInfo property = type.GetProperty(columnName); //若是當前列的值爲null則跳過 if (!(sdr.GetValue(i) is DBNull)) { //給屬性賦值 property.SetValue(entity, sdr.GetValue(i), null); } } entities.Add(entity); } } return entities; } #endregion }