认知尚浅,如有错误,愿闻其详!
概述
在做.NET项目中,如果项目涉及数据库,我们会大量的使用ADO.NET去对数据库进行一些数据的操作,例如CURD(增、改、读、删)等基本操作。所以,我们会频繁的去写读取数据库数据函数、修改数据库数据函数、删除数据库数据函数等大量的函数,写很多的连接与操作数据库语句,不仅工作量大,而且代码量大,不利于维护。为了规避这些问题,我们需要将这些方法进行封装,便于后期调用。
代码
首先,我们需要将数据库连接字符串写到config
配置文件中,便于后期封装的SqlHelper类
进行调用。
<connectionStrings>
<add name ="mssqlserver" connectionString="Data Source = DESKTOP-Q2MQMMC;Initial Catalog = UnityLoginData;User ID = sa ; password = 123456"/>
</connectionStrings>
**再就是创建SqlHelper类,里面封装了对数据库的最基本三个操作方法:ExecuteNonQuery
ExecuteScalar
ExecuteReader
**
//定义一个连接字符串,读取配置文件中名为mssqlserver的connectionString
private static string constr1 = ConfigurationManager.ConnectionStrings["mssqlserver"].ConnectionString;
//1.执行增(insert)删(delete)改(upate)的方法
//ExecuteNonQuery();
/// <summary>
/// 执行增(insert)删(delete)改(upate)的方法
/// </summary>
/// <param name="sql"> sql语句</param>
/// <param name="pms">传入的参数</param>
/// <returns> 返回影响的行数</returns>
public static int ExecuteNonQuery(string sql, params SqlParameter[] pms)
{
using (SqlConnection con = new SqlConnection(constr))
{
using (SqlCommand com = new SqlCommand(sql, con))
{
if (pms != null)
{
com.Parameters.AddRange(pms);
}
con.Open();
return com.ExecuteNonQuery();
}
}
}
//2.执行查询,返回单个值
//ExecuteScalar()
/// <summary>
/// 执行查询,返回单个值
/// </summary>
/// <param name="sql"> 传入的sql语句字符串</param>
/// <param name="pms">sql语句中的参数</param>
/// <returns>返回一个Object</returns>
public static object ExecuteScalar(string sql, params SqlParameter[] pms)
{
using (SqlConnection con = new SqlConnection(constr))
{
using (SqlCommand com = new SqlCommand(sql, con))
{
if (pms != null)
{
com.Parameters.AddRange(pms);
}
con.Open();
return com.ExecuteScalar();
}
}
}
//3.执行查询,返回多个值
//ExecuteReader();
/// <summary>
/// 执行查询,返回多个值
/// </summary>
/// <param name="sql"> 传入的sql语句字符串</param>
/// <param name="pms">sql语句中的参数</param>
/// <returns>返回一个Reader,用于获取返回的每个结果</returns>
public static SqlDataReader ExecuteReader(string sql, params SqlParameter[] pms)
{
SqlConnection con = new SqlConnection(constr);
Console.WriteLine("连接成功");
using (SqlCommand com = new SqlCommand(sql, con))
{
//如果参数不为空,
if (pms != null)
{
com.Parameters.AddRange(pms);
}
try
{
//System.Data.CommandBehavior.CloseConnection这个枚举参数 ,表示将来使用完毕sqlDataReader后,在关闭reader的同时,在sqlDataReader内部会将关联的connection对象也关闭
con.Open();
return com.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
}
catch
{
con.Close();
con.Dispose();
throw;
}
}
}
网友评论