DapperHelper,SqlHelper

using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Dapper;
using System.Configuration;
using System.Data.SqlClient;
using System.Data;

namespace OADemo.Tool
{
public class DapperHelper
{
/*
使用帮助,参数 param 是sql参数化设置,没有参数可以不写。

有1个参数@a param 写成 new {a = 值}
如多个参数@a @b new {a=值,b =值}
in类型的参数 id in (@x,@y,@z) 可改版成 id in @w 参数 new int[]{x,y,z }
*/
/// <summary>
/// 获取连接字符串
/// </summary>
/// <returns></returns>
public static DbConnection GetDbConnection()
{
return new SqlConnection(ConfigurationManager.ConnectionStrings["connStr"].ConnectionString);
}

/// <summary>
/// 查询操作
/// </summary>
/// <typeparam name="T">返回集合的类型</typeparam>
/// <param name="sql">sql语句</param>
/// <param name="param">参数化值</param>
/// <returns></returns>
public static IEnumerable<T> Query<T>(string sql, object param = null)
{
IEnumerable<T> _list = default(IEnumerable<T>);
if (!string.IsNullOrEmpty(sql))
{
using (DbConnection conn = GetDbConnection())
{
_list = conn.Query<T>(sql, param);
}
}
return _list;
}

/// <summary>
/// 和Query<T>的区别是 T之后返回能转换为T类型的集合,这里能返回所有。
/// </summary>
/// <param name="sql"></param>
/// <param name="param"></param>
/// <returns></returns>
public static IEnumerable<dynamic> Query(string sql, object param = null)
{
using (DbConnection conn = GetDbConnection())
{
return conn.Query(sql, param);
}
}
/// <summary>
/// 执行存储过程查询操作
/// </summary>
/// <typeparam name="T">返回集合的类型</typeparam>
/// <param name="storedName">存储过程</param>
/// <param name="param">参数化值</param>
/// <returns></returns>
public static IEnumerable<T> QueryStored<T>(string storedName, object param = null)
{
IEnumerable<T> _list = default(IEnumerable<T>);
if (!string.IsNullOrEmpty(storedName))
{
using (DbConnection conn = GetDbConnection())
{
_list = conn.Query<T>(storedName, commandType: CommandType.StoredProcedure);
}
}
return _list;
}

/// <summary>
/// 查询操作返回默认第一条数据(如返回null则创建默认类型)
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="sql"></param>
/// <param name="param"></param>
/// <returns></returns>
public static T FirstOrDefault<T>(string sql, object param = null)
{
var model = default(T);
if (!string.IsNullOrEmpty(sql))
{
using (DbConnection conn = GetDbConnection())
{
model = conn.Query<T>(sql, param).FirstOrDefault();
}
}
return model == null ? Activator.CreateInstance<T>() : model;
}

public static List<IEnumerable<dynamic>> QueryMultiple(string sql,int readTimes , object param = null)
{
List<IEnumerable<dynamic>> resutl = new List<IEnumerable<dynamic>>();
using (DbConnection conn = GetDbConnection())
{
using (var multi = conn.QueryMultiple(sql, param))
{
if (!multi.IsConsumed)
{
for (int i = 0; i < readTimes; i++)
{
resutl.Add( multi.Read());
}
}
}
}
return resutl;
}

/// <summary>
/// 非查询操作
/// </summary>
/// <param name="sql"></param>
/// <param name="param"></param>
/// <returns></returns>
public static int Excute(string sql, object param = null)
{
using (DbConnection conn = GetDbConnection())
{
return conn.Execute(sql, param);
}
}
/// <summary>
/// 返回首行首列
/// </summary>
/// <param name="sql"></param>
/// <param name="param"></param>
/// <returns></returns>
public static object ExecuteScalar(string sql, object param = null)
{
using (DbConnection conn = GetDbConnection())
{
return conn.ExecuteScalar(sql, param);
}
}

}
}

-------------------------

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace OADemo.Tool
{
public class SqlHelper
{
static string connStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;
public SqlHelper()
{
}

public static int ExecuteNonquery(string cmdText, params SqlParameter[] ps)
{
using (SqlConnection conn = new SqlConnection(connStr))
{
using (SqlCommand cmd = new SqlCommand())
{
conn.Open();
cmd.Connection = conn;
cmd.CommandText = cmdText;
cmd.Parameters.AddRange(ps);
return cmd.ExecuteNonQuery();
}
}
}

public static object ExecuteScalar(string cmdText, params SqlParameter[] ps)
{
using (SqlConnection conn = new SqlConnection(connStr))
{
using (SqlCommand cmd = new SqlCommand())
{
conn.Open();
cmd.Connection = conn;
cmd.CommandText = cmdText;
cmd.Parameters.AddRange(ps);
return cmd.ExecuteScalar();
}
}
}

public static DataSet GetDsByAdapter(string cmdText, params SqlParameter[] ps)
{
DataSet ds = new DataSet();

using (SqlConnection conn = new SqlConnection(connStr))
{
using (SqlCommand cmd = new SqlCommand())
{
conn.Open();
cmd.Connection = conn;
cmd.CommandText = cmdText;
cmd.Parameters.AddRange(ps);
using (SqlDataAdapter apt = new SqlDataAdapter(cmd))
{
apt.Fill(ds);
}
}
}
return ds;
}

public static SqlDataReader GetReader(string cmdText, params SqlParameter[] ps)
{
//using (SqlConnection conn = new SqlConnection(connStr))
//{
// using (SqlCommand cmd = new SqlCommand())
// { conn.Open();
// cmd.Connection = conn;
// cmd.CommandText = cmdText;
// cmd.Parameters.AddRange(ps);

// return cmd.ExecuteReader(CommandBehavior.CloseConnection);
// }
//}

SqlConnection conn = new SqlConnection(connStr);
SqlCommand cmd = new SqlCommand();
conn.Open(); cmd.Connection = conn; cmd.CommandText = cmdText; cmd.Parameters.AddRange(ps);
return cmd.ExecuteReader(CommandBehavior.CloseConnection);

}

}
}

时间: 2024-12-29 06:13:36

DapperHelper,SqlHelper的相关文章

【2016-11-2】【坚持学习】【Day17】【微软 推出的SQLHelper】

从网络上找到 微软原版本的SQLHelper,很多行代码.认真看了,学习了. 代码: 1 using System; 2 using System.Data; 3 using System.Xml; 4 using System.Data.SqlClient; 5 using System.Collections; 6 7 namespace Helper 8 { 9 /// <summary> 10 /// The SqlHelper class is intended to encapsu

对SqlHelper的理解

简介 Sqlhelper 是用来避免重复输入连接数据库代码的类,封装后只需要给类中的方法传入一些参数如数据库连接字符串,SQL参数等就可以访问数据库了.因为我们要声明该类不能被继承或实例化,所以我们要通过静态方法来封装数据访问功能.静态方法为类所有,可以通过对象来使用,也可以通过类来使用.但一般提倡通过类名来使用,应为静态方法只要定义了类,不必建立类的实例就可使用. 机制 上面说了SqlHelper的简介,接下来介绍它具体的运行机制.首先和普通连接数据库的步骤一样,要先定义Connection对

机房收费系统中sqlhelper的应用

在接受了三层的思想之后,sqlhelper被传的沸沸扬扬,它给我们的编码带来多少优势.让编码者少花了多少时间.多少精力,等等的赞美之词不绝于耳.自己也是将信将疑的,毕竟自己没有亲身经历,所以没有很大的体会.而如今,自己多次使用了sqlhelper,穿梭在各层之间确实也体会到了它带给我们的简便之处,结合很多人的版本自己编写了属于自己的那一版,以下便是具体代码: <span style="font-family:KaiTi_GB2312;font-size:18px;">Imp

公共的数据库访问访问类 SqlHelper.cs

/// <summary> /// 类说明:公共的数据库访问访问类 /// </summary> using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Data.SqlClient; using System.Collections; namespace DotNet.Utilities { /// <summary> /// 

一个基于DapperHelper的t4三层

Model Model Model <#@ template debug="false" hostspecific="true" language="C#" #><#@ output extension=".cs" #><#@ assembly name="System.Data.DataSetExtensions.dll" #><#@ import namespa

SqlHelper中IN集合场景下的参数处理

我手头有个古老的项目,持久层用的是古老的ADO.net.前两天去昆明旅游,其中的一个景点是云南民族村,通过导游介绍知道了一个古老的民族——基诺族,这是我国的第56个民族.  项目里的ado.net和基诺族一样古老. 话说,项目里数据访问层,好多都是拼的sql,这给sql注入提供了可乘之机,为了系统安全,决定在有限的时间内,将它改成参数化. 其中,有个根据多个订单号查询支付单的方法,签名如下: public DataTable GetAlipayNotifyRecords(AlipayPaymen

C#实现较为实用的SQLhelper

第一次写博客,想不到写什么好b( ̄▽ ̄)d ,考虑的半天决定从sqlhelper开始,sqlhelper对程序员来说就像helloworld一样,很简单却又很重要,helloworld代表着程序员萌新第一次写代码,而sqlhelper则是初次接触数据库(不知道这种说法对不对). 好了不废话了,下面直接上代码(无话可说了): 1 public class SQLHelper 2 { 3 // 超时时间 4 private static int Timeout = 1000; 5 // 数据库名称

微软原版SQLHelper类

C# Code 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84

微软SQLHelper.cs类 中文版

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Configuration; using System.Data; using System.Data.SqlClient; using System.Xml; using System.Collections; namespace LiuYanBanT { public class SqlHelper