#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