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 + "%" }); }
作者:心存善念
本文地址:https://www.cnblogs.com/xcsn/p/8275194.html
欢迎转载,请在明显位置给出出处及链接。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
2017-01-12 MVC 当前上下文中不存在名称“Styles” “Scripts”