【ADO.NET】7、SQL高级封装
这次是更加简化的进行封装,所有的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高级封装的更多相关文章
- SQL高级查询技巧
SQL高级查询技巧 1.UNION,EXCEPT,INTERSECT运算符 A,UNION 运算符 UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重 ...
- ADO.NET访问SQL Server调用存储过程带回参
1,ADO.NET访问SQL Server调用存储过程带回参 2,DatabaseDesign use northwind go --存储过程1 --插入一条商品 productname=芹菜 un ...
- asp.net将sql语句封装在类库中
将sql语句封装在cs中,通过类库的引用使用他的select.update.insert 源代码(cs): using System; using System.Collections.Generic ...
- JDBC连接SQL server与ADO.NET连接Sql Server对比
JDBC连接SQL server与ADO.NET连接Sql Server对比 1.JDBC连接SQL server 1)java方面目前有很多驱动能够驱动连接SQL servernet. 主流的有 ...
- SQL 高级查询(层次化查询,递归)
SQL 高级查询 前面我们写了一下 SQL 的极简入门,今天来说点高级查询.没看到的朋友可以点击下面链接查看. 1 小时 SQL 极速入门(一) 1 小时 SQL 极速入门(二) 1 小时 SQL 极 ...
- Oracle SQL高级编程——分析函数(窗口函数)全面讲解
Oracle SQL高级编程--分析函数(窗口函数)全面讲解 注:本文来源于:<Oracle SQL高级编程--分析函数(窗口函数)全面讲解> 概述 分析函数是以一定的方法在一个与当前行相 ...
- .NET Core开发日志——ADO.NET与SQL Server
在.NET世界,如果想要对数据库进行操作,总少不了ADO.NET的身影.在.NET Core里同样离不开那些熟悉的类库与API.这里简略地介绍下如何通过ADO.NET对SQL Server进行不同的处 ...
- ADO如何记录SQL日志
ADO如何记录SQL日志 procedure TfrmDM.ADOConnection1WillExecute(Connection: TADOConnection; var CommandText: ...
- 13Microsoft SQL Server SQL 高级事务,锁,游标,分区
Microsoft SQL Server SQL高级事务,锁,游标,分区 通过采用事务和锁机制,解决了数据库系统的并发性问题. 9.1数据库事务 (1)BEGIN TRANSACTION语句定义事务的 ...
随机推荐
- sql中用逗号拼接字符串
MSSQL中可以用STUFF函数拼接成字符串. 如: SELECT FieldSomeElse, ( SELECT STUFF(( SELECT ',' + LinkField FROM Detail ...
- jQuery获取鼠标移动方向2
(function($) { $.fn.extend({ show: function(div) { var w = this.width(), h = this.height(), xpos = w ...
- OceanBase里面的rowkey是什么概念,是由哪些要素构成的?
Rowkey是OceanBase诞生之初就引入的概念,最终被确立是在OceanBase 0.3. 为了便于理解,不妨把OceanBase想象成一个Key-Value系统,Rowkey就是Key,Val ...
- CAS认证(2):认证过程
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...
- ubuntu 远程 ubuntu
一:被远程端ubuntu配置 參考windows远程ubuntu这篇文章里面的ubuntu配置 二:远程端ubuntu配置 1:打开Remmina Remote Desktop Client软件,例如 ...
- 关机相关(shutdown,reboot)
慣用的關機指令: shutdown 由於Linux的關機是那麼重要的工作,因此除了你是在主機前面以tty7圖形介面來登入系統時, 不論用什麼身份都能夠關機之外,若你是使用遠端管理工具(如透過piett ...
- JAVA Web 之 struts2文件上传下载演示(一)(转)
JAVA Web 之 struts2文件上传下载演示(一) 一.文件上传演示 1.需要的jar包 大多数的jar包都是struts里面的,大家把jar包直接复制到WebContent/WEB-INF/ ...
- iostat详解
http://www.penglixun.com/tech/system/use_iostat_analyse_linux_disks.html
- Ubuntu上架设PPPoE Server
一.安裝 PPPoE Server Software1)sudo apt-get install ppp2)rp-pppoe(非apt套件)wget -c http://www.roaringpeng ...
- 自己动手,丰衣足食!一大波各式各样的ImageView来袭!
工作略忙,一直想自己打造一个开源控件却苦于没有时间,可是这种事情如果不动手就会一直拖下去,于是最近抽时间做了个简单的自定义形状的ImageView控件. 时间紧迫,目前仅支持正六边形.圆形.菱形.椭圆 ...