using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;
using System.Data;
using System.Configuration;
namespace SQLDB
{
public class SqlHelp
{
//链接数据库字符串
private static string connString = ConfigurationManager.ConnectionStrings[“connString”].ToString();
//定义conn
public static SqlConnection conn;
//定义全局变量
public static SqlDataAdapter sda;
//定义全局变量
public static SqlCommandBuilder scb;
//定义全局变量DataSet
public static DataSet ds;
//定义全局变量
public static SqlCommand cmd;
#region 标准化SQL语句的执行,包含连接模式和非链接模式
//===链接连接模型
///
/// 执行增删改
///
/// T-SQL语句
/// 受影响的行数
public static int GetExecuteNonQuery(string sql)
{
//实例化conn
conn = new SqlConnection(connString);
//实例化cmd
SqlCommand cmd = new SqlCommand(sql, conn);
//打开
try
{
conn.Open();
return cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
throw ex;
}
finally
{
conn.Close();
}
}
/// <summary>
/// 查询第一行第一列
/// </summary>
/// <param name="sql">T-SQL语句</param>
/// <returns>返回OBJECT类型</returns>
public static object GetExecuteScalar(string sql)
{//实例化conn
conn = new SqlConnection(connString);
//实例化cmd
SqlCommand cmd = new SqlCommand(sql, conn);
//执行
try
{
conn.Open();
return cmd.ExecuteScalar();
}
catch (Exception ex)
{
throw ex;
}
finally
{
conn.Close();
}
}
/// <summary>
/// 读取所有行数据
/// </summary>
/// <param name="sql">T-SQL语句</param>
/// <returns>返回DataRead</returns>
public static SqlDataReader GetExecuteReader(string sql)
{
//实例化conn
conn = new SqlConnection(connString);
//实例化cmd
SqlCommand cmd = new SqlCommand(sql, conn);
//执行
try
{
//打开
conn.Open();
SqlDataReader sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
return sdr;
}
catch (Exception ex)
{
throw ex;
}
}
//========================非连接模型下的方法=========================
/// <summary>
/// 通过键值对的方式获得DataSet的Table带有表名称和主键
/// </summary>
/// <param name="TableKeyValues">Dictionary键值对《表名称,SQL语句》</param>
/// <param name="TableKey">表的主键</param>
/// <returns>返回带有主键和表名称的DataSet</returns>
public static DataSet GetAllInfoToDataSet(Dictionary<string, string> TableKeyValues, string TableKey)
{
//实例化dataSet
ds = new DataSet();
//实例化conn
conn = new SqlConnection(connString);
try
{
//循环遍历dic获得键值对
foreach (KeyValuePair<string, string> item in TableKeyValues)
{
//实例化cmd
cmd = new SqlCommand(item.Value, conn);
//实例化dataadapter
sda = new SqlDataAdapter(cmd);
//定义类型
sda.SelectCommand = cmd;
//实例化SqlcommandB
scb = new SqlCommandBuilder(sda);
//打开
conn.Open();
//填充数据
sda.Fill(ds, item.Key);
//为表添加主键
ds.Tables[item.Key].PrimaryKey = new DataColumn[] { ds.Tables[item.Key].Columns[TableKey] };
}
return ds;
}
catch (Exception)
{
throw;
}
finally
{
conn.Close();
}
}
//更新DataSet到数据库
public static void UpdataStudentInfo(string TableName)
{
conn.Open();
sda.Update(ds, TableName);
conn.Close();
}
#endregion
#region 参数化SQL语句执行
/// <summary>
/// 参数化SQL语句执行增删改
/// </summary>SELECT SNO, SName, Gender, Birthday, Mobile, Email, HomeAddress, PhotoPath FROM Student where SNO LIKE @SNO AND SName Like @SName AND Mobile Like @Mobile"
/// <param name="sql">T-SQL带参数的语句</param>
/// <param name="para">调用参数</param>
/// <returns>返回受影响的行数,</returns>
public static int GetExecuteNonQuery(string sql,SqlParameter[] para)
{
//实例化conn
conn = new SqlConnection(connString);
//实例化cmd
cmd = new SqlCommand(sql, conn);
//执行
try
{
//打开conn
conn.Open();
//执行
cmd.Parameters.AddRange(para);
return cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
throw ex;
}
finally
{
conn.Close();
}
}
/// <summary>
/// 参数化SQL语句执行查询单个结果集,第一行第一列
/// </summary>
/// <param name="sql">SQL带参数的语句</param>
/// <param name="para">调用参数的数组</param>
/// <returns>返回第一行第一列Object类型</returns>
public static object GetExecuteScalar(string sql,SqlParameter[] para)
{
//实例化conn
conn = new SqlConnection(connString);
//实例化cmd
cmd = new SqlCommand(sql, conn);
//执行
try
{
conn.Open();
//添加参数化
cmd.Parameters.AddRange(para);
//返回单个结果集
return cmd.ExecuteScalar();
}
catch (Exception)
{
throw;
}
finally
{
conn.Close();
}
}
/// <summary>
/// 返回多个结果集
/// </summary>
/// <param name="sql">带有参数的SQL语句</param>
/// <param name="para">参数的数组</param>
/// <returns>返回DataReader多个结果集</returns>
public static SqlDataReader GetExecuteReader(string sql,SqlParameter[]para)
{
//实例化conn
conn = new SqlConnection(connString);
//实例化comd
cmd = new SqlCommand(sql, conn);
//执行
try
{
//打开
conn.Open();
//将参数化赋值给cmd
cmd.Parameters.AddRange(para);
//返回
return cmd.ExecuteReader(CommandBehavior.CloseConnection);
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
}
}