using System.Linq;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System;/*
搞明白几个问题:
1.ADO.NET五大常用对象?
2.using 与 close的作用及区别?
3.DataReader的用法及注意事项?
*//// <summary>
/// ADO.NET数据库操作
/// </summary>
public class SqlHelper
{
/// <summary>
/// 数据库连接字符串,从配置文件读取
/// </summary>
private static readonly string strConn = ConfigurationManager.ConnectionStrings["sql"].ConnectionString;/// <summary>
/// 执行查询(非连接式),将查询结果全部加载到内存中
/// </summary>
/// <param name="sql">SQL语句</param>
/// <param name="parameters">SQL参数集合</param>
/// <returns>包含查询结果的表</returns>
public static DataTable ExecQuery(string sql, params SqlParameter[] parameters)
{
//using加载完之后自动关闭
using (SqlDataAdapter dataAdapter = new SqlDataAdapter(sql, strConn))
{
using (DataTable table = new DataTable())
{
//判断参数中是否有值
if (parameters != null && parameters.Count() > 0)
{
//将参数集合加载到SelectCommand
dataAdapter.SelectCommand.Parameters.AddRange(parameters);
}try
{
dataAdapter.Fill(table);
}
catch (Exception ex) //执行出错,释放资源
{
table.Dispose();
dataAdapter.Dispose();
//抛出异常
throw ex;
}
return table;
}
}
}/// <summary>
/// 执行查询(连接式),逐行读取查询结果
/// </summary>
/// <remarks>使用完毕后,一定不要忘记Reader.Close()</remarks>
/// <param name="sql">SQL语句</param>
/// <param name="parameters">SQL参数集合</param>
/// <returns>SqlDataReader对象</returns>
public static SqlDataReader ExecReader(string sql, params SqlParameter[] parameters)
{
//创建连接对象
//【为什么不能使用using?】
SqlConnection sqlConnection = new SqlConnection(strConn);
using (SqlCommand sqlCommand = new SqlCommand(sql, sqlConnection))
{
//判断参数中是否有值
if (parameters != null && parameters.Count() > 0)
{
sqlCommand.Parameters.AddRange(parameters);
}try
{
sqlConnection.Open();
//将Reader与Connection进行绑定,关闭Reader的同时释放Connection
return sqlCommand.ExecuteReader(CommandBehavior.CloseConnection);
}
catch (Exception ex) //执行出错,释放资源
{
sqlCommand.Dispose();
sqlConnection.Close();
sqlConnection.Dispose();
throw ex;
}
}
}/// <summary>
/// 执行非查询(增删改)语句
/// </summary>
/// <param name="sql">SQL语句</param>
/// <param name="parameters">SQL参数集合</param>
/// <returns>返回受影响的行数</returns>
public static int ExecNonQuery(string sql, params SqlParameter[] parameters)
{
using (SqlConnection sqlConnection = new SqlConnection(strConn))
{
using (SqlCommand sqlCommand = new SqlCommand(sql, sqlConnection))
{
if (parameters != null && parameters.Count() > 0)
{
sqlCommand.Parameters.AddRange(parameters);
}try
{
sqlConnection.Open();
//返回受影响的行数
return sqlCommand.ExecuteNonQuery();
}
catch (Exception ex)
{
sqlCommand.Dispose();
sqlConnection.Close();
sqlConnection.Dispose();
throw ex;
}
}
}
}/// <summary>
/// 执行查询,返回查询结果第一行第一列的值
/// </summary>
/// <remarks>常用于查询SUM、COUNT等聚合函数的结果</remarks>
/// <param name="sql">SQL语句</param>
/// <param name="parameters">SQL参数集合</param>
/// <returns>第一行第一列的值</returns>
public static object ExecScalar(string sql, params SqlParameter[] parameters)
{
using (SqlConnection sqlConnection = new SqlConnection(strConn))
{
using (SqlCommand sqlCommand = new SqlCommand(sql, sqlConnection))
{
if (parameters != null && parameters.Count() > 0)
{
sqlCommand.Parameters.AddRange(parameters);
}try
{
sqlConnection.Open();
return sqlCommand.ExecuteScalar();
}
catch (Exception ex)
{
sqlCommand.Dispose();
sqlConnection.Close();
sqlConnection.Dispose();
throw ex;
}
}
}
}
}
详细解决方案
sqlhelper类完整版
热度:77 发布时间:2024-02-28 07:52:14.0
相关解决方案
- SqlHelper 超时有关问题
- |M| 幕白兄 小弟我那个DLL中的 public sealed class SqlHelper 这里面怎么来调用他的事务处理最科学 多谢
- 将 SQLHelper 改为实例化形式好不好~
- 求.net 2.0 SQLHelper.cs下载地址解决方法
- 上下文中不存在名称“SqlHelper”?该如何处理
- 关于PetShop4.0 中 SQLHelper.cs 的有关问题
- SQLHelper.cs里的一句看不明白,大家解释下,马上结,该怎么解决
- 提示异常:SqlHelper”并不包含“CacheParameters”的定义?好心人教教小弟我菜鸟
- sqlhelper.executereader返回1NaN解决办法
- SqlHelper 有关问题
- 机房复建包图(从三层+实体到三层+实体+外观+工厂+接口+SQLHelper)
- 四大天骄之变形金刚(SqlHelper)
- VB.NET版机房收费系统-SqlHelper
- 机房收费复建(四)-SqlHelper
- 数据操作的打包-sqlhelper
- vb.net机房收费系统——种的理解(sqlhelper)
- SqlHelper.cs
- 【代码】SQLHelper