这次是更加简化的进行封装,所有的cmd操作命令都封装到了 Allcmd() 方法里面
别外还有一个别点是 每次执行命令完后,都会垃圾回收, cmd.Parameters.Clear();
是先将执行返回的结果用变量存储,然后在 Clear 掉,然后再将变量值返回出去

   public static string str = ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString;

    /// <summary>
/// 用于查询数据返回 SqlDataReader 类型
/// </summary>
/// <param name="ConnectionStrs">连接字符串</param>
/// <param name="type">操作类型(text/StoredProcedure)</param>
/// <param name="cmdtext">操作命令(存储过程)</param>
/// <param name="parameter">参数</param>
/// <returns></returns>
public static SqlDataReader ExecuteReader(string ConnectionStrs,CommandType type,string cmdtext, params SqlParameter[] parameter)
{
SqlConnection conn = new SqlConnection(ConnectionStrs);
SqlCommand cmd = conn.CreateCommand();
Allcmd(conn, cmd, type, cmdtext, parameter);
SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
cmd.Parameters.Clear();
return dr;
} /// <summary>
/// 用于更新,删除,插入数据返回int类型
/// </summary>
/// <param name="ConnectionStrs">连接字符串</param>
/// <param name="type">操作类型(text/StoredProcedure)</param>
/// <param name="cmdtext">操作命令(存储过程)</param>
/// <param name="parameter">参数</param>
/// <returns></returns>
public static int ExecuteNoQuery(string ConnectionStrs, CommandType type, string cmdtext, params SqlParameter[] parameter)
{
using (SqlConnection conn = new SqlConnection(ConnectionStrs))
{
SqlCommand cmd = conn.CreateCommand();
Allcmd(conn, cmd,type, cmdtext, parameter);
int val = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return val;
}
} /// <summary>
/// 用于返回首行首列的数据返回object类型
/// </summary>
/// <param name="ConnectionStrs">连接字符串</param>
/// <param name="type">操作类型(text/StoredProcedure)</param>
/// <param name="cmdtext">操作命令(存储过程)</param>
/// <param name="parameter">参数</param>
/// <returns></returns>
public static object ExecuteScalar(string ConnectionStrs, CommandType type, string cmdtext, params SqlParameter[] parameter)
{
using (SqlConnection conn = new SqlConnection(ConnectionStrs))
{
SqlCommand cmd = conn.CreateCommand();
Allcmd(conn, cmd, type, cmdtext, parameter);
object val = cmd.ExecuteScalar();
cmd.Parameters.Clear();
return val;
}
} /// <summary>
/// 用于操作全部的连接命令
/// </summary>
/// <param name="conn">连接对象</param>
/// <param name="cmd">命令操作对象</param>
/// <param name="Type">命令操作类型</param>
/// <param name="cmdText">执行语句</param>
/// <param name="cmdParms">参数对象</param>
private static void Allcmd(SqlConnection conn, SqlCommand cmd, CommandType Type, string cmdText, SqlParameter[] cmdParms)
{
if (conn.State != ConnectionState.Open)
{
conn.Open();
}
cmd.Connection = conn;
cmd.CommandType = Type;
cmd.CommandText = cmdText;
if (cmdParms != null)
{
foreach (SqlParameter par in cmdParms)
{
cmd.Parameters.Add(par);
}
}
}

【ADO.NET】7、SQL高级封装的更多相关文章

  1. SQL高级查询技巧

    SQL高级查询技巧   1.UNION,EXCEPT,INTERSECT运算符 A,UNION 运算符 UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重 ...

  2. ADO.NET访问SQL Server调用存储过程带回参

    1,ADO.NET访问SQL Server调用存储过程带回参 2,DatabaseDesign  use northwind go --存储过程1 --插入一条商品 productname=芹菜 un ...

  3. asp.net将sql语句封装在类库中

    将sql语句封装在cs中,通过类库的引用使用他的select.update.insert 源代码(cs): using System; using System.Collections.Generic ...

  4. JDBC连接SQL server与ADO.NET连接Sql Server对比

    JDBC连接SQL server与ADO.NET连接Sql Server对比 1.JDBC连接SQL server 1)java方面目前有很多驱动能够驱动连接SQL servernet.   主流的有 ...

  5. SQL 高级查询(层次化查询,递归)

    SQL 高级查询 前面我们写了一下 SQL 的极简入门,今天来说点高级查询.没看到的朋友可以点击下面链接查看. 1 小时 SQL 极速入门(一) 1 小时 SQL 极速入门(二) 1 小时 SQL 极 ...

  6. Oracle SQL高级编程——分析函数(窗口函数)全面讲解

    Oracle SQL高级编程--分析函数(窗口函数)全面讲解 注:本文来源于:<Oracle SQL高级编程--分析函数(窗口函数)全面讲解> 概述 分析函数是以一定的方法在一个与当前行相 ...

  7. .NET Core开发日志——ADO.NET与SQL Server

    在.NET世界,如果想要对数据库进行操作,总少不了ADO.NET的身影.在.NET Core里同样离不开那些熟悉的类库与API.这里简略地介绍下如何通过ADO.NET对SQL Server进行不同的处 ...

  8. ADO如何记录SQL日志

    ADO如何记录SQL日志 procedure TfrmDM.ADOConnection1WillExecute(Connection: TADOConnection; var CommandText: ...

  9. 13Microsoft SQL Server SQL 高级事务,锁,游标,分区

    Microsoft SQL Server SQL高级事务,锁,游标,分区 通过采用事务和锁机制,解决了数据库系统的并发性问题. 9.1数据库事务 (1)BEGIN TRANSACTION语句定义事务的 ...

随机推荐

  1. 组件局域网中的无集线器、Windows XP、Windows 7、Windows 8的对等网

     为什么要用对等网? 答:对等网采用分散管理的方式,网络中的每台计算机既作为客户机又可作为服务器来工作,每个用户都管理自己机器上的资源. 组建局域网中无集线器的对等网 组建局域网中Windows XP ...

  2. mongodb日志服务器方案

    描述 目前要做的是多台服务器上的程序日志(如订购日志,交易日志,接口是否成功等)汇总到1个mongodb服务器,每日大约1亿的量,然后有图表实时展现,和报表展现日志信息 注意: 没有把所有日志放入1张 ...

  3. 校友信息管理系统&SNS互动平台之用户需求及概要设计

    前言.提纲及说明: 请移步:<校友信息管理&SNS互动平台之前言.目录及说明>(博客园地址:http://www.cnblogs.com/s6cn/p/3516876.html) ...

  4. UAF漏洞--iOS是越狱原理

    Use After Free UAF 就是 Use After Free的缩写,是一种比较常见的内存错误式利用.很多iOS的越狱都是利用的这种方法.在此简单的举个例子说明UAF出现的情况 代码说明一切 ...

  5. 根据日期累加金额的mysql

    今天遇到了一个语句,想了一会觉得有必要记录一下 问题描述 id  money date 1 10 2015-01-012 20 2015-01-023 30 2015-01-034 40 2015-0 ...

  6. Oracle数据库编程:PL/SQL编程基础

    2.PL/SQL编程基础: PL/SQL块:        declare        定义部分        begin        执行部分        exception        异 ...

  7. C#基础知识-对象初始化顺序

    本文章转载:http://blog.csdn.net/forever_wind/article/details/7442503 不错的文章:http://www.cnblogs.com/McJerem ...

  8. MySQL bug:server-id默认被自己主动置为1

    昨天同事在做主从时,从库报例如以下错误: Got fatal error 1236 from master when reading data from binary log: 'Misconfigu ...

  9. LoC

    对于图片.Flash等非文本文件统计文件数量.文件大小: 对于文本文件统计文件数量.文本行数.字符数:

  10. 非spring环境中配置文件工具

    http://commons.apache.org/proper/commons-configuration/ 注意:属性的值使用","分割,会造成读取属性值不正确的问题.建议使用 ...