SqlCommand.Parameters的使用
在c#中执行sql语句时,避免会遇到传参的问题。Parameters就是用来做参数化查询,不然很容易被黑客拿到数据。
一、简介
引用自:https://msdn.microsoft.com/ZH-CN/library/system.data.sqlclient.sqlcommand.parameters(v=vs.110).aspx
命名空间: System.Data.SqlClient
程序集: System.Data(位于 System.Data.dll)
语法
public SqlParameterCollection Parameters { get; }
属性值
Type: System.Data.SqlClient.SqlParameterCollection
Transact-SQL 语句或存储过程的参数。 默认值为空集合。
二、示例
private static void UpdateDemographics(Int32 customerID,
string demoXml, string connectionString)
{
// Update the demographics for a store, which is stored
// in an xml column.
string commandText = "UPDATE Sales.Store SET Demographics = @demographics "
+ "WHERE CustomerID = @ID;"; using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlCommand command = new SqlCommand(commandText, connection);
command.Parameters.Add("@ID", SqlDbType.Int);
command.Parameters["@ID"].Value = customerID; // Use AddWithValue to assign Demographics.
// SQL Server will implicitly convert strings into XML.
command.Parameters.AddWithValue("@demographics", demoXml); try
{
connection.Open();
Int32 rowsAffected = command.ExecuteNonQuery();
Console.WriteLine("RowsAffected: {0}", rowsAffected);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
三、常见用法
1. 分页查询
如下定义, 如果在查询数据语句和查询总条数中使用,会在第二处提示被引用的异常
List<SqlParameter> parameters = new List<SqlParameter>() ;
解决方法:
parameters.Select(x => ((ICloneable)x).Clone()).ToArray<object>()
2. Like的用法
原因是传入的参数会被自动加上单引号,直接使用 Title like '%@Title%'会出错
if (!string.IsNullOrEmpty(Title))
{
keyCondition += " and (Title like @Title ) ";
parameters.Add(new SqlParameter() { ParameterName = "@Title", Value = "%" + Title + "%" });
}
SqlCommand.Parameters的使用的更多相关文章
- SqlCommand.Parameters.add()方法
SqlParameter 类 表示 SqlCommand 的参数,也可以是它到 DataSet 列的映射.无法继承此类. 命名空间: System.Data.SqlClient 程序集: Syst ...
- params可变参数、SqlCommand.Parameters.add()方法
namespace params可变参数{ class Program { static void Main(string[] args) { int[] num = {66,99,55,44, }; ...
- C#编程:SqlCommand.Parameters.Add()方法的参数问题。
在存储过程中添加2个参数 sql语句 例: “update [tablename] username = @username where id=@id” 然后把需要的 command.Paramete ...
- 通过List<String>动态传递参数给 sqlcommand.Parameters
通过List<String>动态传递参数 private void GetallChecked_TreeNote(TreeNodeCollection aNodes, ref int To ...
- SqlCommand的Parameters的用法
SqlCommand的Parameters的用法 可以用的SqlCommand的Parameters的方法SqlCommand cmd=new ("insert into notice(ly ...
- ADO.NET之SqlConnection、sqlcommand的应用(学习笔记)
一.知识描述点 1.SqlConnection (1)使用SqlConnection类可以连接到SQL Server数据库.SqlConnection对象的主要属性和方法如下: ——属性:Connec ...
- ADO.Net之SqlConnection、 Sqlcommand的应用
ADO.Net之SqlConnection. Sqlcommand的应用 SqlConnection 的介绍与应用 1.介绍与作用 SqlConnection是ADO.NET中的连接类. 使用sqlc ...
- sql的那些事(一)
一.概述 书写sql是我们程序猿在开发中必不可少的技能,优秀的sql语句,执行起来吊炸天,性能杠杠的.差劲的sql,不仅使查询效率降低,维护起来也十分不便.一切都是为了性能,一切都是为了业务,你觉得你 ...
- asp.net执行SqlServer存储过程!(详解!)
ASP.NET执行存储过程 一. 执行一个没有参数的存储过程的代码如下: connectionString为连接字符串 SqlConnection conn=new SqlConnection(con ...
随机推荐
- EF 6.x和EF Core实现返回dynamic类型
前言 未曾想需要直接返回dynamic,多次尝试未能实现,最终还是在stackoverflow上找到了解决方案,特此备忘录. public static dynamic SqlQuery(this D ...
- 分享:大型Web网站架构演变之9大阶段
前言 我们以Java Web为例,来搭建一个简单的电商系统,看看这个系统可以如何一步步演变. 该系统具备的功能: 用户模块:用户注册和管理 商品模块:商品展示和管理 交易模块:创建交易和管理 正文 阶 ...
- Shell命令-文件及内容处理之vi、vim
文件及内容处理 - vi.vim 1.Linux vi/vim 所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在. 但是目前我们使用比较多的是 vim 编辑器 ...
- python xlwt模块生成excel文件并写入数据 xlrd读取数据
python中一般使用 xlwt (excel write)来生成Excel文件(可以控制单元格格式),用 xlrd 来读取Excel文件,用xlrd读取excel是不能对其进行操作的. 1.xlrd ...
- java 中的基本数据类型
1, 变量 Java是强类型语言, 对于每一种数据都定义了类型,基本数据类型分为数值型,字符型,布尔型.数值型又分为了整型和浮点型. 整型又分为byte, int, short long. 浮点型又 ...
- 深度学习之前期准备工作--python,pip,numpy,tensorflow安装
1.下载并安装python https://www.python.org/downloads/windows/ 推荐3.6.5版本 2.激活pip 1.>因为python3.4之后都自带了pip ...
- BZOJ3626[LNOI2014]LCA——树链剖分+线段树
题目描述 给出一个n个节点的有根树(编号为0到n-1,根节点为0).一个点的深度定义为这个节点到根的距离+1.设dep[i]表示点i的深度,LCA(i,j)表示i与j的最近公共祖先.有q次询问,每次询 ...
- Euler Circuit UVA - 10735(混合图输出路径)
就是求混合图是否存在欧拉回路 如果存在则输出一组路径 (我就说嘛 咱的代码怎么可能错.....最后的输出格式竟然w了一天 我都没发现) 解析: 对于无向边定向建边放到网络流图中add(u, v, 1) ...
- MT【281】最大值函数
已知正系数二次函数$ax^2+bx+c=0$有实数根,证明:$\max\{a,b,c\}\ge\dfrac{4}{9}(a+b+c)$ 证明:$\max\{a,b,c\}=\dfrac{a+c+|a- ...
- SignarL服务器端发送消息给客户端的几种情况
一.所有连接的客户端 Clients.All.addContosoChatMessageToPage(name, message); 二.只发送给呼叫的客户端(即触发者) Clients.Caller ...