开发项目时,应用程序需要与数据库相连接,对数据库中的数据进行操作处理,而其中的操作的方法有3种:command.ExecuteScalar()、command.ExecuteReader()、command.ExecuteNonQueryr(),根据是否有参数3种方法又分别有两个重载;详细如下:分组开发,该类的代码可直接复制粘贴使用,又由于方法都是静态方法,再用类名.方法名()调用即可
/// <summary>
/// 数据连接助手类
/// </summary>
public class DBHelper
{
//连接字符串(只读)
private static readonly string st = "Data Source=.;Initial Catalog=shinichikudo;Persist Security Info=True;User ID=sa;Password=zc";
//连接字符串,可在:数据连接-属性-连接字符串处复制,再修改password(密码),即可连接数据库
//数据库连接对象(只读)
private static SqlConnection cons
{
get
{
SqlConnection cons = new SqlConnection(st);//实例化连接对象
cons.Open();//连接对象打开数据库
return cons;//返回连接对象
}
}
/// <summary>
/// 执行查询操作,返回第一行第一列的数据
/// </summary>
/// <param name="sql">select count(*)语句</param>
/// <param name="para">参数</param>
/// <returns>返回第一行第一列的数据</returns>
public static object getScalar(string sql, SqlParameter[] para)//command.ExecuteScalar()方法,有用户输入参数,获取的是第一行第一列的数据
{
SqlConnection con = null;
SqlCommand com = null;
try
{
con = cons;//接收连接对象
com = new SqlCommand(sql, con);//实例化操作对象
if (para != null)//如果参数不为null,将参数传入sql语句
{
com.Parameters.AddRange(para);//将参数传入sql语句
}
return com.ExecuteScalar();//返回command.ExecuteScalar()方法的对象,注意返回的对象类型为object类型
}
catch (Exception e)//异常处理
{
Console.WriteLine(e.Message);//输出异常信息
return null;//异常时将command.ExecuteScalar()方法返回值设为null
}
finally
{
if (com!=null)//关闭操作对象
{
if (com.Connection.State == ConnectionState.Open || com.Connection.State == ConnectionState.Broken)
{
com.Connection.Close();
}
}
if (con != null)//关闭连接对象
{
con.Close();
}
}
}
/// <summary>
/// 统计班级人数
/// </summary>
/// <returns>返回第一行第一列的数据:总人数</returns>
public static object getScalar(string sql)//重载command.ExecuteScalar()方法,没有有用户输入参数,获取的是第一行第一列的数据
{
return getScalar(sql,null);//执行上面的command.ExecuteScalar(string sql, SqlParameter[] para)方法,自行将参数设置为null,注意返回的对象类型为object类型
}
/// <summary>
/// 执行增、删、改操作,返回受影响行数
/// </summary>
/// <param name="sql">insert delete update</param>
/// <param name="pa"></param>
/// <returns>返回受影响行数:int</returns>
public static int getExecuteNonQuery(string sql,SqlParameter[]pa)//command.ExecuteNonQuery()方法,有用户输入参数,获取的是受影响的行数:适用与增、删、改操作
{
SqlConnection con = null;
SqlCommand com = null;
try
{
con = cons;//接收连接对象
com = new SqlCommand(sql, con);//实例化操作对象
if (pa != null)//如果参数不为null,将参数传入sql语句
{
com.Parameters.AddRange(pa);//将参数传入sql语句
}
return com.ExecuteNonQuery();//返回command.ExecuteNonQuery()方法的对象,注意返回的对象类型为int类型,获取的是受影响的行数:适用与增、删、改操作
}
catch (Exception e)//异常处理
{
Console.WriteLine(e.Message);//输出异常信息
return -1;//异常时将command.ExecuteNonQuery()方法返回值设为-1
}
finally
{
if (com != null)//关闭操作对象
{
if (com.Connection.State == ConnectionState.Open || com.Connection.State == ConnectionState.Broken)
{
com.Connection.Close();
}
}
if (con != null)//关闭连接对象
{
con.Close();
}
}
}
/// <summary>
/// 执行增、删、改操作,返回受影响行数
/// </summary>
/// <param name="sql">insert delete update</param>
/// <param name="pa"></param>
/// <returns>返回受影响行数:int</returns>
public static int getExecuteNonQuery(string sql)//重载command.ExecuteNonQuery()方法,没有有用户输入参数,获取的是受影响的行数
{
return getExecuteNonQuery(sql,null);//执行上面的command.ExecuteNonQuery(string sql,SqlParameter[]pa)方法,自行将参数设置为null,注意返回的对象类型为int类型
}
/// <summary>
/// 查询所有信息,返回多行信息SqlDataReader类型
/// </summary>
/// <param name="sql">select</param>
/// <param name="pa"></param>
/// <returns>返回多行信息:SqlDataReader对象</returns>
public static SqlDataReader getExecuteReader(string sql, SqlParameter[] pa)//command.tExecuteReader()方法,有用户输入参数,获取的是多行信息(SqlDataReader类型)
{
SqlConnection con = null;
SqlCommand com = null;
try
{
con = cons;//接收连接对象
com = new SqlCommand(sql, con);//实例化操作对象
if (pa != null)//如果参数不为null,将参数传入sql语句
{
com.Parameters.AddRange(pa);//将参数传入sql语句
}
return com.ExecuteReader(CommandBehavior.CloseConnection);
//返回command.ExecuteReader()方法的对象,注意返回的对象类型为SqlDataReader类型,获取的是多行信息
//注意command.ExecuteReader()方法的关闭是用枚举CommandBehavior.CloseConnection属性,程序会自行判断,当command.ExecuteReader()方法阅读完所有信息时将所有对象关闭(包括读取对象,连接对象,操作对象)
}
catch (Exception e)//异常处理
{
Console.WriteLine(e.Message);//输出异常信息
return null;//异常时将command.ExecuteReader()方法方法返回值设为null
}
}
/// <summary>
/// 查询所有信息,返回多行信息SqlDataReader类型
/// </summary>
/// <param name="sql">select</param>
/// <param name="pa"></param>
/// <returns>返回多行信息:SqlDataReader对象</returns>
public static SqlDataReader getExecuteReader(string sql)//重载command.ExecuteReader()方法,没有有用户输入参数,获取的是多行信息
{
return getExecuteReader(sql,null);//执行上面的command.ExecuteReader(string sql,SqlParameter[]pa)方法,自行将参数设置为null,注意返回的对象类型为SqlDataReader类型
}
}