C#编写SQLHelper

1.基本数据库访问方法

//不带产生增删改
public int Update(string sql)
{
	SqlConnection conn = new SqlConnection(conString);
	SqlCommand cmd = new SqlCommand(sql,conn);
	try
	{
		conn.Open();
		return cmd.ExecuteNonQuery();
	}
	catch(Exception ex)
	{
		throw ex;
	}
	finally
	{
		conn.Close();
	}
}
//不带参数返回单一结果
public object GetSingle(string sql)
{
	SqlConnection conn = new SqlConnection(connString);
	SqlCommand cmd = new SqlCommand(sql,conn);
	try
	{
		conn.Open();
		return cmd.ExecuteScalar();
	}
	catch(Exception ex)
	{
		thorw ex;
	}
	finally
	{
		conn.Close();
	}
}
//不带参数返回SqlDataReader方法
public SqlDataReader GetReader(string sql)
{
	SqlConnection conn = new SqlConnection(connString);
	SqlCommand cmd = new SqlCommand(sql,conn);
	try
	{
		conn.Open();
		return cmd.ExcecuteReader(CommandBehavior.CloseConnection);
	}
	catch(Exception ex)
	{
		conn.Close();
		throw ex;
	}
}
//返回DataSet方法
public DataSet GetDataSet(string sql)
{
	SqlConnection conn = new SqlConnection(connString);
	SqlCommand cmd = new SqlCommand(sql,conn);
	SqlDataAdapter da = new SqlDataAdapter(cmd);
	DataSet ds = new DataSet();
	try
	{
		conn.Open();
		da.Fill(ds);
		return ds;
	}
	catch(Exception ex)
	{
		throw ex;
	}
	finally
	{
		conn.Close();
	}
}


2.带参数操作数据库方法

//带参数增删改
public int Update(string sql,SqlParameter[] param)
{
	SqlConnection conn = new SqlConnection(conString);
	SqlCommand cmd = new SqlCommand(sql,conn);
	try
	{
		conn.Open();
		cmd.Parameters.AddRange(param);
		return cmd.ExecuteNonQuery();
	}
	catch(Exception ex)
	{
		throw ex;
	}
	finally
	{
		conn.Close();
	}
}
//带参数返回单一结果
public object GetSingleResult(string sql, SqlParameter[] param)
{
	SqlConnection conn = new SqlConnection(connString);
	SqlCommand cmd = new SqlCommand(sql,conn);
	try
	{
		conn.Open();
		cmd.Parameters.AddRange(param);
		return cmd.ExecuteScalar();
	}
	catch(Exception ex)
	{
		throw ex;
	}
	finally
	{
		conn.Close();
	}
}
//带参数返回SqlDataReader
public SqlDataReader GetReader(string sql, SqlParameter[] param)
{
	SqlConnection conn = new SqlConnection(connString);
	SqlCommand cmd = new SqlCommand(sql,conn);
	try
	{
		conn.Open();
		cmd.Parameters.AddRange(param);
		return cmd.ExecuteReader(CommandBehavior.CloseConnection);
	}
	catch(Exception ex)
	{
		throw ex;
	}
	
}

3.使用数据存储过程操作数据库方法

//通过存储过程进行增删改
public int UpdateByProcedure(string procedureName,SqlParameter[] param)
{
	SqlConnection conn = new SqlConnection(connString);
	SqlCommand cmd = new SqlCommand();
	cmd.Connection = conn;
	try
	{
		conn.Open();
		cmd.CommandType = CommandType.StoredProcedure;
		cmd.CommandText = procedureName;
		cmd.Paramaters.AddRange(param);
		return cmd.ExecuteNonQuery();
	}
	catch(Exception ex)
	{
		throw ex;
	}
	finally
	{
		conn.Close();
	}
}
//通过存储过程获取单一结果
public object GetSingleResultByProcedure(string procedureName, SqlParamater[] param)
{
	SqlConnection conn = new SqlConnection(connString);
	SqlCommand cmd = new SqlCommand();
	cmd.Connection = conn;
	try
	{
		conn.Open();
		cmd.CommandType = Command.StoredProcedure;
		cmd.CommandText = procedureName;
		cmd.Paramaters.AddRange(param);
		return cmd.ExecuteScalar();
	}
	catch(Exception ex)
	{
		throw ex;
	}
	fianlly
	{
		conn.Close();
	}
}
//通过存储过程获取SqlDataReader
public SqlDataReader GetReaderByProcedure(string procedureName, SqlParameter[] param)
{
	SqlConnection conn = new SqlConnection();
	SqlCommand cmd = new SqlCommand();
	cmd.Connection = conn;
	try
	{
		conn.Open();
		cmd.CommandType = CommandType.StoredProcedure;
		cmd.CommandText = procedureName;
		cmd.Parameters.AddRange(param);
		return cmd.ExecuteReader(CommandBehavior.CloseConnection);
	}
	catch(Exception ex)
	{
		conn.Close();
		throw ex;
	}
}

4.使用事务对数据库进行操作

1.使用List sqlList (无参数)进行事务对数据库操作

//使用事务无参数操作数据库
public bool UpdateByTran(List<string> sqlList)
{
	SqlConnection conn = new SqlConnection(connString);
	SqlCommand cmd = new SqlCommand();
	cmd.Connection = conn;
	try
	{
		conn.Open();
		cmd.Transaction = conn.BeginTransaction();
		foreach(string itemSql in sqlList)
		{
			cmd.CommandText = itemSql;
			cmd.ExecuteNonQuery();
		}
		cmd.Transaction.Commit();
		return true;
	}
	catch(Exception ex)
	{
		if(cmd.Transaction != null)
		{
			cmd.Transaction.RollBack();
			throw ex;
		}
	}
	finally
	{
		if(cmd.Transaction != null)
		{
			cmd.Transaction = null;
		}
		conn.Close();
	}
}

2.带参数使用事务对数据库操作

public bool UpdateByTran(string sql, List<SqlParameter[]> paramList)
{
	SqlConnection conn = new SqlConnection(connString);
	SqlCommand cmd = new SqlCommand();
	cmd.Connection = conn;
	cmd.CommandText = sql;
	try
	{
		conn.Open();
		cmd.Transaction = conn.BeginTransaction();
		foreach(SqlParameter[] itemParam in paramList)
		{
			cmd.Parameters.Clear();
			cmd.Parameters.AddRange(itemParam);
			cmd.ExecuteNonQuery();
		}
		cmd.Transaction.Commit();
		return true;
	}
	catch(Exception ex)
	{
		if(cmd.Transaction != null)
		{
			cmd.Transaction.RollBack();
			throw ex;
		}
	}
	finally
	{
		if(cmd.Transaction != null)
		{
			cmd.Transaction = null;
		}
		conn.Close();
	}
}

3.使用事务对两个关联的数据表进行操作

public bool UpdateByTran(string mainSql, SqlParameter[] mainParam, string detailSql, List<SqlParameter[]> paramList)
{
	SqlConnection conn = new SqlConnection(connString);
	SqlCommand cmd = new SqlCommand();
	cmd.Connection = conn;
	try
	{
		conn.Open();
		cmd.Transaction = conn.BegionTransaction();//开启事务
		//对主表进行操作
		cmd.CommandText = mainSql;
		cmd.Parameters.AddRange(mainParam);
		cmd.ExecuteNonQuery();
		//对从表进行操作
		cmd.CommandText = detailSql;
		foreach(SqlParameter[] paramArry in paramList)
		{
			cmd.Parameters.Clear();
			cmd.Parameters.AddRange(paramArry);
			cmd.ExecuteNonQuery();
		}
		cmd.Transaction.Commit();
		return true;
	}
	catch(Exception ex)
	{
		if(cmd.Transaction != null)
		{
			cmd.Transaction.RollBack();
		}
		throw ex;
	}
	finally
	{
		if(cmd.Transaction != null)
		{
			cmd.Transaction = null;
		}
		conn.Close();
	}
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

枫杨NET

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值