public class DbHelperSQL
{
private static string connString = ConfigurationManager.ConnectionStrings["SqlDataSource"].ToString(); #region 获取一个连接通道
/// <summary>
/// 获取一个连接通道
/// </summary>
/// <returns></returns>
public static SqlConnection CreateConn()
{
return new SqlConnection(connString);
}
#endregion #region 获取数据源
/// <summary>
/// 获取数据源
/// </summary>
/// <param name="sql"></param>
/// <param name="parms"></param>
/// <returns></returns>
public static DataSet Query(string sql, CommandType cmdType = CommandType.Text, params SqlParameter[] parms)
{
DataSet dt = new DataSet();
using (SqlConnection conn = CreateConn())
{
SqlDataAdapter da = new SqlDataAdapter();
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.CommandType = cmdType;
if (parms != null)
{
cmd.Parameters.AddRange(parms);
}
da.SelectCommand = cmd;
da.Fill(dt);
} return dt;
}
#endregion #region 执行事务
/// <summary>
/// 执行事务
/// </summary>
/// <param name="sql">存储过程名</param>
/// <param name="parmsList">每个存储过程中所包含的参数</param>
/// <returns></returns>
public static int ExecTran(string sql, List<SqlParameter[]> parmsList,CommandType cmdType = CommandType.Text)
{
int row = ;
using (SqlConnection conn = CreateConn())
{
conn.Open();
SqlTransaction tran = conn.BeginTransaction();
SqlCommand cmd = new SqlCommand(sql, conn, tran);
cmd.CommandType = cmdType;
if (parmsList != null && parmsList.Count>)
{
foreach (SqlParameter[] parms in parmsList)
{
cmd.Parameters.Clear();
if (parms != null)
{
cmd.Parameters.AddRange(parms);
}
try
{
row += cmd.ExecuteNonQuery();
}
catch
{
tran.Rollback();
return ;
}
}
tran.Commit();
}
}
return row;
}
#endregion #region 执行包含主表和子表的事务
/// <summary>
/// 执行包含主表和子表的事务
/// </summary>
/// <param name="MainSql">主表存储过程</param>
/// <param name="MainParmsList">主表存储过程包含的参数</param>
/// <param name="ChildSql">子表存储过程</param>
/// <param name="ChildParmsList"></param>
/// <returns></returns>
public int ExecTran(string MainSql, CommandType cmdType, List<SqlParameter[]> MainParmsList, string ChildSql, List<SqlParameter[]> ChildParmsList)
{
int row = ;
using (SqlConnection conn = CreateConn())
{
conn.Open();
SqlTransaction tran = conn.BeginTransaction();
SqlCommand cmd = new SqlCommand(MainSql, conn, tran);
cmd.CommandType = cmdType;
if (MainParmsList != null)
{
foreach (SqlParameter[] parms in MainParmsList)
{
cmd.Parameters.Clear();
if (parms != null)
{
cmd.Parameters.AddRange(parms);
}
try
{
row = cmd.ExecuteNonQuery();
}
catch
{
tran.Rollback();
return ;
}
}
}
cmd.CommandText = ChildSql;
if (ChildParmsList != null)
{
foreach (SqlParameter[] parm in ChildParmsList)
{
cmd.Parameters.Clear();
if (parm != null)
{
cmd.Parameters.AddRange(parm);
}
try
{
row = cmd.ExecuteNonQuery();
}
catch
{
tran.Rollback();
return ;
}
}
tran.Commit();
}
}
return row;
}
#endregion #region 执行Sql语句
/// <summary>
/// 执行Sql语句
/// </summary>
/// <param name="sql"></param>
/// <param name="parms"></param>
/// <returns></returns>
public static int ExecuteSql(string sql, CommandType cmdType = CommandType.Text, params SqlParameter[] parms)
{
int row = ;
using (SqlConnection conn = CreateConn())
{
conn.Open();
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.CommandType = cmdType;
if (parms != null)
{
cmd.Parameters.AddRange(parms);
}
row = cmd.ExecuteNonQuery();
}
return row;
}
#endregion #region 获取首行首列
/// <summary>
/// 获取首行首列
/// </summary>
/// <param name="sql"></param>
/// <param name="parms"></param>
/// <returns></returns>
public static object GetSingle(string sql, CommandType cmdType= CommandType.Text, params SqlParameter[] parms)
{
using (SqlConnection conn = CreateConn())
{
conn.Open();
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.CommandType = cmdType;
if (parms != null)
{
cmd.Parameters.AddRange(parms);
}
return cmd.ExecuteScalar();
}
}
#endregion
}

Ado.net 通用访问类的更多相关文章

  1. 针对SQLServer数据库的通用访问类

    Web.config中代码 <configuration> <connectionStrings> <add name="connString" co ...

  2. ADO.NET 数据访问类查询、属性扩展

    今天,我首先在之前所做的人员管理系统的基础上,利用数据访问类进行了所有人员信息的查询. 主程序代码: List<Users> Ulist = new UsersData().Select( ...

  3. SQLServer数据库通用访问类

    private static string connString=ConfigurationManager.ConnStrings["connString"].ToString() ...

  4. C#:数据库通用访问类 SqlHelper

    using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; usin ...

  5. 一个通用数据库访问类(C#,SqlClient)

    本文转自:http://www.7139.com/jsxy/cxsj/c/200607/114291.html使用ADO.NET时,每次数据库操作都要设置connection属性.建立connecti ...

  6. DataAccess通用数据库访问类,简单易用,功能强悍

    以下是我编写的DataAccess通用数据库访问类,简单易用,支持:内联式创建多个参数.支持多事务提交.支持参数复用.支持更换数据库类型,希望能帮到大家,若需支持查出来后转换成实体,可以自行扩展dat ...

  7. C# 通用数据访问类(SqlHelper)

    [转]C# 通用数据访问类(SqlHelper) 注:本文转自http://www.tzwhx.com/newOperate/html/3/31/312/13080.htmlVisual C# 动态操 ...

  8. ADO.NET(一) 空间 ADO.NET结构 命名空间(车延禄) System.Data—— 所有的一般数据访问类 S(转载)

    ADO.NET(一) 空间   ADO.NET结构 命名空间(车延禄)System.Data—— 所有的一般数据访问类System.Data.Common—— 各个数据提供程序共享(或重写)的类Sys ...

  9. ado.net 实体类_数据访问类

    实体类: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ...

随机推荐

  1. diff, cmp, patch

    diff 以行为单位比较两个文件之间的差异,经常用来查看同一个文件的新旧版本的差异,通常用在文本文件的比较,可以使用重定向'>'制作补丁文档,通常以.patch结尾 \(diff [-bBi] ...

  2. python ljust,rjust,center,zfill对齐使用方法

    字符串在输出时的对齐:S.ljust(width,[fillchar]) #输出width个字符,S左对齐,不足部分用fillchar填充,默认的为空格. S.rjust(width,[fillcha ...

  3. 前端mock数据之mockjax和mockjson

    用处 在前后台共同进行一个项目的时候常会遇到一种情景, 后台定义好接口,前端按照接口进行开发, 当前端开发完成后台接口却还没有开发完成, 这个时候要进行接口测试, 只能等后台开发完成才能测试, 在这中 ...

  4. C/C++ 位域

    //假设硬件平台是intel x86(little endian) typedef unsigned int uint32_t; void inet_ntoa(uint32_t in) { ]; re ...

  5. Bash Shell read file line by line and substring

    #read one file line by line for line in $(cat test1.txt); do echo $line ; done; #while read split li ...

  6. java charset detector

    https://code.google.com/p/juniversalchardet/downloads/list java移植mozilla的编码自动检测库(源码为c++),准确率高. 通过svn ...

  7. UVA 12730 Skyrk's Bar --期望问题

    题意:有n个地方,现在要站人进去,而每两个人之间至少要隔k个空地,问这n个地方能站的人数的期望是多少. 分析:考虑dp[i]表示 i 个地方能站的期望数,从左往右推, 如果i-k-1<1,那么最 ...

  8. POJ 3398 Perfect Service --最小支配集

    题目链接:http://poj.org/problem?id=3398 这题可以用两种上述讲的两种算法解:http://www.cnblogs.com/whatbeg/p/3776612.html 第 ...

  9. Fidder--实现手机的抓包

    今天闲着没吊事,来写一篇关于怎么抓取Android中的app数据包?工欲行其事,必先利其器,上网google了一下,发现了一款神器:Fiddler,这个貌似是所有软件开发者必备神器呀!这款工具不仅可以 ...

  10. openstack中彻底删除计算节点的操作记录

    在使用openstack的过程中,我们经常会添加好几台计算节点来部署虚拟机,在后续使用中由于某些原因,一些计算节点出现了问题,需要将这些出了问题的计算节点从openstack的控制节点中踢出去!但是很 ...