cmd.Parameters的Add方法是增加一个参数,增加多个参数的的时候使用一个foreach循环,cmd.Parameters的AddRange方法是增加一个参数的数组。

Add:将指定的对象添加到……中

AddRange:向……末尾,添加数组

在群体操作时,使用AddRange取代Add

用AddRange可以让我们要加入的东西一次性加入,而不要每次只加一个,这样显然可以加快速度。几乎所有的windows control都支持Add和AddRange两种方法。

Add:

For i = 0 To param.Length - 1
comm.Parameters.Add(param(i))
Next i

AddRange:

Comm.Parameters.AddRange(Param)

支持Add和AddRange的类:
StringCollection, TraceCollection, SqlParameter, etc.
HttpWebRequest
UserControl
ColumnHeader

原代码:

  1. ''' ExecuteQuery,查询数据操作
  2. ''' </summary>
  3. ''' <param name="strSql">sql语句</param>
  4. ''' <param name="param">参数集合</param>
  5. ''' <param name="ct">命令类型</param>
  6. ''' <returns>DataTable类型,数据表</returns>
  7. ''' <remarks></remarks>
  8. Public Function ExecuteQuery(ByVal strSql As String, ByVal param() As SqlParameter, ByVal ct As CommandType) As DataTable
  9. Dim dt As New DataTable
  10. comm = New SqlCommand(strSql, Me.GetConn)
  11. comm.CommandType = ct
  12. If param IsNot Nothing Then
  13. For i = 0 To param.Length - 1
  14. comm.Parameters.Add(param(i))
  15. Next i
  16. End If
  17. Try
  18. dr = comm.ExecuteReader()
  19. dt.Load(dr)
  20. Catch ex As Exception
  21. Throw ex
  22. Finally
  23. dr.Close()
  24. conn.Close()
  25. End Try
  26. Return dt
  27. End Function

''' ExecuteQuery,查询数据操作
''' </summary>
''' <param name="strSql">sql语句</param>
''' <param name="param">参数集合</param>
''' <param name="ct">命令类型</param>
''' <returns>DataTable类型,数据表</returns>
''' <remarks></remarks>
Public Function ExecuteQuery(ByVal strSql As String, ByVal param() As SqlParameter, ByVal ct As CommandType) As DataTable
Dim dt As New DataTable

comm = New SqlCommand(strSql, Me.GetConn)
comm.CommandType = ct

If param IsNot Nothing Then
For i = 0 To param.Length - 1
comm.Parameters.Add(param(i))
Next i
End If

Try
dr = comm.ExecuteReader()
dt.Load(dr)
Catch ex As Exception
Throw ex
Finally
dr.Close()
conn.Close()
End Try

Return dt
End Function

修改后:

  1. ''' <summary>
  2. ''' 查询方法
  3. ''' </summary>
  4. ''' <param name="myCommandType">sql语句类型:区别于存储过程</param>
  5. ''' <param name="Param">参数数组</param>
  6. ''' <param name="strSql">sql语句</param>
  7. Public Function ExecuteQuery(ByVal myCommandType As CommandType, ByVal Param() As SqlParameter, ByVal strSql As String) As DataTable
  8. Dim dt As New DataTable
  9. Comm = New SqlCommand(strSql, Me.GetConn)
  10. Comm.CommandType = myCommandType
  11. If Param IsNot Nothing Then
  12. Comm.Parameters.AddRange(Param)
  13. End If
  14. Try
  15. myDataReader = Comm.ExecuteReader
  16. dt.Load(myDataReader)
  17. Catch ex As Exception
  18. Throw ex
  19. Finally
  20. myDataReader.Close()
  21. Conn.Close()
  22. End Try
  23. Return dt
  24. End Function

AddRange 取代 Add的更多相关文章

  1. Add和AddRange的区别

    Add和AddRange区别 Add和AddRange Add:将指定的对象添加到……中 AddRange:向……末尾,添加数组 - 在群体操作时,使用AddRange取代Add 用AddRange可 ...

  2. C#学习记录

    转眼几个月没更博了,把几个月前学C#的笔记发一下,就记录了点教重要的点子而已 1.打印 Console.WriteLine(); 打印 Console.ReadKey(); 按一个按键继续执行 Con ...

  3. SqlHelper——数据库小助手

    SqlHelper其实就是一个类. 早就听说过"SqlHelper"这个名词,也查过相关的资料,但还是一头雾水.当真的去实践去用它时,就会发现其实它没那么神秘. 当敲第一个窗体的时 ...

  4. [转]How to Improve Entity Framework Add Performance?

    本文转自:http://entityframework.net/improve-ef-add-performance When you overuse the Add() method for mul ...

  5. 【译】第42节---EF6-DbSet.AddRange & DbSet.RemoveRange

    原文:http://www.entityframeworktutorial.net/entityframework6/addrange-removerange.aspx EF 6中的DbSet引入了新 ...

  6. Entity Framework 6.0 Tutorials(7):DbSet.AddRange & DbSet.RemoveRange

    DbSet.AddRange & DbSet.RemoveRange: DbSet in EF 6 has introduced new methods AddRange & Remo ...

  7. EF 添加方式比较

    using System; using System.Collections.Generic; using DBAccess.Models; using EntityFramework.BulkIns ...

  8. Entity Framework Core 2.0 入门简介

    不多说废话了, 直接切入正题. EF Core支持情况 EF Core的数据库Providers: 此外还即将支持CosmosDB和 Oracle. EFCore 2.0新的东西: 查询: EF.Fu ...

  9. Entity Framework Core 2.0 入门

    该文章比较基础, 不多说废话了, 直接切入正题. 该文分以下几点: 创建Model和数据库 使用Model与数据库交互 查询和保存关联数据 EF Core支持情况 EF Core的数据库Provide ...

随机推荐

  1. Django中间件的使用

    Django中间件的使用 中间件(middleware) 中间件应用于request与服务端之间和服务端与response之间,客户端发起请求到服务端接收可以通过中间件,服务端返回响应与客户端接收响应 ...

  2. IE和其他浏览器内核

    1.qq急速 2.qq的IE兼容模式 3.Edge 4.IE11 5.chrome js获取浏览器内核 <script language="JavaScript" type= ...

  3. F. Graph Without Long Directed Paths Codeforces Round #550 (Div. 3)

    F. Graph Without Long Directed Paths time limit per test 2 seconds memory limit per test 256 megabyt ...

  4. 使用IntelliJ IDEA和Maven管理搭建Web开发环境(以Spring MVC为例)(二)

    前言:在使用IntelliJ IDEA和Maven管理搭建Web开发环境(以Spring MVC为例)(一)中已经介绍了如何对web基础环境进行搭建,这里主要演示,如何对spring环境进行搭建,然后 ...

  5. 数据库索引 引用树形结构 B-数 B+数

    MySQL 为什么使用B+数 B-树和B+树最重要的一个区别就是B+树只有叶节点存放数据,其余节点用来索引,而B-树是每个索引节点都会有Data域. 这就决定了B+树更适合用来存储外部数据,也就是所谓 ...

  6. Web和移动开发的未来

    Web和移动开发的未来 当我们与来自整个IT行业的专家交谈时,他们告诉我们技术,PWA和优化的持续整合是关键. 为了收集有关网络和移动开发当前和未来状况的见解,我们与19位IT主管进行了交流,我们问道 ...

  7. 15.selenium_case04

    # 用selenium实现一个头条号的模拟发文接口 import time import redis from selenium import webdriver from selenium.webd ...

  8. centos7下安装docker(16.docker跨主机存储)

    从业务数据的角度看,容器可以分为两类:无状态(stateless)容器和有状态(stateful)容器. 无状态:是指容器在运行的过程中不需要保存数据,每次访问的结果不依赖上一次的访问,比如提供静态页 ...

  9. P2080 增进感情(背包DP)

    思路:将好感度x+y作为体积, 幸福度x-y作为作为价值, 然后就是一个经典的背包问题了.emmmmm,还可以特判一下,因为幸福度为0时就是最小了,没有必要看后面的了吧. 其实,我自己做的时候,沙雕的 ...

  10. $.each遍历实现延时

    今天做项目时需要一功能,如题..... $.each(json, function(idx, obj) { setTimeout(function () {downloadFile(obj.fileK ...