#if !NETSTANDARD2_0 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.SqlClient; using System.Data; #if NET45 using System.Threading.Tasks; #endif namespace HslCommunication.BasicFramework { //================================================================================================= // // 创建时间:2017年09月03日 20:56:18 // 有关数据库操作的方法,进行总结精简,提供了三个非常常用的方法方便调用 // //================================================================================================= /// /// 数据库操作的相关类,包含了常用的方法,避免大量的重复代码 /// public static class SoftSqlOperate { /// /// 普通的执行SQL语句,并返回影响行数,该方法应该放到try-catch代码块中 /// /// 数据库的连接字符串 /// sql语句,适合插入,更新,删除 /// 返回受影响的行数 /// public static int ExecuteSql(string conStr, string cmdStr) { using (SqlConnection conn = new SqlConnection(conStr)) { conn.Open(); return ExecuteSql(conn, cmdStr); } } /// /// 普通的执行SQL语句,并返回影响行数,该方法应该放到try-catch代码块中 /// /// 数据库的连接对象 /// sql语句,适合插入,更新,删除 /// 返回受影响的行数 /// public static int ExecuteSql(SqlConnection conn, string cmdStr) { using (SqlCommand cmd = new SqlCommand(cmdStr, conn)) { return cmd.ExecuteNonQuery(); } } /// /// 选择数据表的执行SQL语句,并返回最终数据表,该方法应该放到try-catch代码块中 /// /// 数据库的连接字符串 /// sql语句,选择数据表的语句 /// 结果数据表 /// /// public static DataTable ExecuteSelectTable(string conStr, string cmdStr) { using (SqlConnection conn = new SqlConnection(conStr)) { conn.Open(); return ExecuteSelectTable(conn, cmdStr); } } /// /// 选择数据表的执行SQL语句,并返回最终数据表,该方法应该放到try-catch代码块中 /// /// 数据库连接对象 /// sql语句,选择数据表的语句 /// 结果数据表 /// public static DataTable ExecuteSelectTable(SqlConnection conn, string cmdStr) { using (SqlDataAdapter sda = new SqlDataAdapter(cmdStr, conn)) { using (DataSet ds = new DataSet()) { sda.Fill(ds); return ds.Tables[0]; } } } /// /// 选择指定类型数据集合执行SQL语句,并返回指定类型的数据集合,该方法应该放到try-catch代码块中 /// /// 数据库的连接字符串 /// sql语句,选择数据表的语句 /// 结果数据集合 /// /// public static List ExecuteSelectEnumerable(string conStr, string cmdStr) where T : ISqlDataType, new() { using (SqlConnection conn = new SqlConnection(conStr)) { conn.Open(); return ExecuteSelectEnumerable(conn, cmdStr); } } /// /// 选择指定类型数据集合执行SQL语句,并返回指定类型的数据集合,该方法应该放到try-catch代码块中 /// /// 数据库的连接对象 /// sql语句,选择数据表的语句 /// 结果数据集合 /// /// public static List ExecuteSelectEnumerable(SqlConnection conn, string cmdStr) where T : ISqlDataType, new() { using (SqlCommand cmd = new SqlCommand(cmdStr, conn)) { using (SqlDataReader sdr = cmd.ExecuteReader()) { List list = new List(); while (sdr.Read()) { T item = new T(); item.LoadBySqlDataReader(sdr); list.Add(item); } return list; } } } /// /// 更新指定类型数据执行SQL语句,并返回指定类型的数据集合,该方法应该放到try-catch代码块中 /// /// 数据库的连接字符串 /// sql语句,选择数据表的语句 /// 结果数据 /// /// public static T ExecuteSelectObject(string conStr, string cmdStr) where T : ISqlDataType, new() { using (SqlConnection conn = new SqlConnection(conStr)) { conn.Open(); return ExecuteSelectObject(conn, cmdStr); } } /// /// 更新指定类型数据执行SQL语句,并返回指定类型的数据集合,该方法应该放到try-catch代码块中 /// /// 数据库的连接对象 /// sql语句,选择数据表的语句 /// 结果数据 /// /// public static T ExecuteSelectObject(SqlConnection conn, string cmdStr) where T : ISqlDataType, new() { using (SqlCommand cmd = new SqlCommand(cmdStr, conn)) { using (SqlDataReader sdr = cmd.ExecuteReader()) { if (sdr.Read()) { T item = new T(); item.LoadBySqlDataReader(sdr); return item; } else { return default(T); } } } } /// /// 用于选择聚合函数值的方法,例如Count,Average,Max,Min,Sum等最终只有一个结果值的对象 /// /// 数据库的连接字符串 /// sql语句,选择数据表的语句 /// 返回的int数据 public static int ExecuteSelectCount(string conStr, string cmdStr) { using (SqlConnection conn = new SqlConnection(conStr)) { conn.Open(); return ExecuteSelectCount(conn, cmdStr); } } /// /// 用于选择聚合函数值的方法,例如Count,Average,Max,Min,Sum等最终只有一个结果值的对象 /// /// 数据库的连接对象 /// sql语句,选择数据表的语句 /// 返回的int数据 public static int ExecuteSelectCount(SqlConnection conn, string cmdStr) { using (SqlCommand cmd = new SqlCommand(cmdStr, conn)) { int temp = 0; SqlDataReader sdr = cmd.ExecuteReader(); if (sdr.Read()) { temp = Convert.ToInt32(sdr[0]); } sdr.Close(); return temp; } } } /// /// 数据库对应类的读取接口 /// public interface ISqlDataType { /// /// 根据sdr对象初始化数据的方法 /// /// 数据库reader对象 void LoadBySqlDataReader(SqlDataReader sdr); } } #endif