SqlParameter 使用】的更多相关文章

string sql = @"INSERT INTO stu VALUES (@id,@name) "; 参数化查询是经常用到的,它可以有效防止SQL注入.但是需要手动去匹配参数@id,@name.数据量大时很繁琐,下面是自动填充SqlParameter列表的实现. 支持泛型,Object和ExpandoObject动态类型 using System; using System.Collections.Generic; using System.Data.SqlClient; usin…
1.在更新DataTable或是DataSet时,如果不采用SqlParameter,那么当输入的Sql语句出现歧义时,如字符串中含有单引号,程序就会发生错误,并且他人可以轻易地通过拼接Sql语句来进行注入攻击. 2. string sql = "update Table1 set name = 'Pudding' where ID = '1'";//未采用SqlParameter SqlConnection conn = new SqlConnection(); conn.Conne…
今天很奇怪调用EF的ExecuteStoreCommand 出现了个这样的错误,怎么也调试不过,痛定思痛 原来 command被连着调用了而没有销毁掉   public static DataTable GetDataTable(            string connDBStr, string sql, params SqlParameter[] cmdParms)        {            SqlCommand cmd = new SqlCommand();       …
Question: I' using Dapper in my project. I have a list of SqlParameters and I want to send it to Dapper. But Dapper needs an object (name, value). How can I convert a SqlParameter to an object. I know this doesn't work: conn.Query<TModel>(sql, param…
1.SQL注入:SQL注入攻击是web应用程序的一种安全漏洞,可以将不安全的数据提交给运用程序,使应用程序在服务器上执行不安全的sql命令.使用该攻击可以轻松的登录运用程序. 例如:该管理员账号密码为xiexun,该sql的正确语句应该为: select * from Users where userName='xiexun' 如果在没有做任何处理的情况下,在登录名文本框中输入(xuxian' delete users--),单击"登录"按钮之后,相当于传了两句sql语句,一句执行查询…
1.设定size 字段定义:column [Text] nvarchar(max) NULL 设定字段最大长度: new SqlParameter("@Text",SqlDbType.NVarChar,-1),//-1指定size为max  Nvarchar(max) 2.设定value的简便做法,不用指定下标,如parameter[0].value=value  new SqlParameter("@name", SqlDbType.Varchar) { Valu…
直接MSDN:http://msdn.microsoft.com/zh-cn/library/0881fz2y(VS.80).aspx 当在 value 参数中指定 Object 时,SqlDbType 将从 Object 的 .NET Framework 类型推断出. 请小心使用 SqlParameter 构造函数的这个重载来指定整数参数值.因为此重载接受 Object 类型的 value,所以当此值为零时,必须将整数值转换为 Object 类型,如下面的 C# 示例所示.     Param…
这是sqlHelper.cs类,类内里封装了方法 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Data; using System.Data.SqlClient; using System.Configuration; /// <summary> ///sqlHelper 的摘要说明 /// </summary> public cl…
1.数据访问层 using的用法: 01.可以using System;导命名控空间 02.using 的语法结构 using(变量类型  变量名 =new 变量类型()) { } 案例: 03.using的原理 为什么出了using所在的{},会自动回收对象. 原因是当我们将要出{},系统自动调用了Dispose()方法. 而在DISpose方法中是这么实现的 2.哪些对象才可以使用Using回收!如:SqlConnection  Font 和File 也都可以使用using   因为他们实现…
SqlParameter中size对于需要指定大小的数据库中的数据类型参数有影响[如nvarchar],如果对于这些类型没有指定size则会默认根据赋的值进行推导应该指定的size,而对于那些大小固定的数据类型类型没有影响[如 int] SqlParameter para=new SqlParameter("@name",SqlDbType.Int,3); 监测结果如下: nvarchar会根据需要截取长度,如我输入的参数值为aaaaaaaaaaaaa SqlParameter par…
因为通过SQL 语句的方式,有时候存在脚本注入的危险,所以在大多数情况下不建议用拼接SQL语句字符串方式,希望通过SqlParameter实现来实现对数据的操 作,针对SqlParameter的方式我们同样可以将其封装成一个可以复用的数据访问类,只是比SQL语句的方式多了一个SqlParameter的参 数. 般来说,在更新DataTable或是DataSet时,如果不采用SqlParameter,那么当输入的Sql语句出现歧义时,如字符串 中含有单引号,程序就会发生错误,并且他人可以轻易地通过…
一般情况下,我们定义的一个SqlParameter参数数组,如: SqlParameter[] parms =             {                new SqlParameter("@DateTime1", dtBegin),                new SqlParameter("@DateTime2", dtEnd)            }; 如果只给一个SqlCommand使用,这种情况的参数使用,不会出现异常,但如果该参数…
List<SqlParameter> parameters = new List<SqlParameter>(); SqlParameter param; foreach (...) { param = new SqlParameter(...); parameters.Add(param); } SqlParameter[] p = parameters.ToArray(); .....…
原C#代码如下: if (query != null) { switch (query.MethodFlag) { //进出口退补税额统计表 case (int)EnumClassifyCorrectionRSTMethodFlags.CCRSTStatistial: paras[] = ); sqlWhere += "BASETYPE=0"; break; case (int)EnumClassifyCorrectionRSTMethodFlags.CCCustomDistrictS…
/// <summary> /// 增加一条数据 /// </summary> public bool Add(Model.WechatDocuments model) { StringBuilder strSql=new StringBuilder(); strSql.Append("insert into WechatDocuments("); strSql.Append("DocumentName,DocumentPath,DocumentFor…
protected void Button1_Click(object sender, EventArgs e) { string strSql="insert into Invoice_Rebate_Customer_L (FORM_ID,LINE_NO) values (@formNo,@lineNo)"; SqlParameter[] paras =new SqlParameter[2]; paras[0] = new SqlParameter("@formNo&quo…
C#代码  ExecuteReader(string connectionString, CommandType commandType, string commandText, params SqlParameter[] commandParameters) 以params声明的形参说明参数的个数是可选的,可以为0个或多个.以params声明的形参中含一个参数数组,则该参数数组必须位于形参列表最后:以params声明的参数数组必须是一维数组:以params声明的形参当为多个时,以","…
出处:http://www.cnblogs.com/OldYongs/archive/2011/03/12/1982021.html#2742742 一般情况下,我们定义的一个SqlParameter参数数组,如: SqlParameter[] parms =             {                 new SqlParameter("@DateTime1", dtBegin),                 new SqlParameter("@Dat…
今天调试到方法中代码: String hotelCodes =”’’,’’,’’”; string sqltext ="select * from HotelMedalInfo where hotelCode in(@hotelCodes)"; SqlParameter[] parameters = { new SqlParameter("@hotelCodes", hotelCodes) }; DataTable dt = DBHelper.ExecuteData…
按常规的思路,我们会这样写 复制代码代码如下: String searchName ="Sam"; String strSql = "select * FROM Table1 where Name like '%@Name%' "; SqlParameter[] parameters = { new SqlParameter("@Name", searchName) };  但结果是查询不到结果,跟踪代码也没有发现错误,又不想用字符串拼接的方式(…
关于Sql注入的基本概念,相信不需要多说,大家都清楚,经典的注入语句是' or 1=1--单引号而截断字符串,"or 1=1"的永真式的出现使得表的一些信息被暴露出来,如果sql语句是select * from 的话,可能你整个表的信息都会被读取到,更严重的是,如果恶意使用都使用drop命令,那么可能你的整个数据库得全线崩溃.当然,现在重点不是讲sql注入的害处,而是说说如何最大限度的避免注入问题.sql注入的存在在最大危害,是sql的执行语句没有和控制语句分开,我们想要select一…
一.SQL注入的原因 随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多.但是由于这个行业的入门门槛不高,程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患.用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入. SQL注入是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问没什么区别,所以目前市面的防火墙都不会对S…
看到很多朋友在实例化SqlParameter时,通常都没有指定参数的长度就直接给参数赋值了.就像下面的写法: new SqlParameter("@address", SqlDbType.Varchar) { Value = address}; 以前也一直都觉的加与不加参数长度应该没有什么区别,仅是写法上的不同而已,直到做完这个项目,才明白其实两者不一样的,为了提高sql执行速度,请为SqlParameter参数加上size属性. 下面我们分析一下两者的区别: 根据MSDN解释:如果未…
上篇博客写了关于重构代码用到的SQLHelper类,这个类包括四种函数,根据是否含参和是否有返回值各分两种.在这里写写传参过程用到的SqlParameter. 如果我们使用如下拼接sql字符串的方式进行数据库操作存在脚本注入的危险: Dim sql As String = "insert into T_Loginlog(userID,loginDate,loginTime,computer)values('" + Enloginlog.user_userID + "','&q…
public DataTable GetAdminTopDCSCheckReport(int top) { StringBuilder strSql = new StringBuilder(); strSql.Append(" select top (@top) * from [T_Report] where IsSave=1 and IsCheck1= 0 and IsCheck2= 0 order by submittime desc"); SqlParameter[] param…
正确的写法(简洁版) private void GetHandleData(string strKeyWord1, string strKeyWord2, string strKeyWord3) { string strSql = "select top 10 * from VW_Bookinfo where bcode like @strKeyWord1 and contacttel like @strKeyWord2 and spuname like @strKeyWord3 order b…
            SqlParameter[] param = new SqlParameter[]             {                 new SqlParameter("@Page",SqlDbType.Int,4),                 new SqlParameter("@Size",SqlDbType.Int,4 ),                 new SqlParameter("@Conditio…
前2天在使用SqlParameter传递参数的时候遇到一个小坑,这里分享一下. SqlParameter para=new SqlParameter("@IsDeleted",0); 这样传递参数,到数据库执行的时候后面的参数将会变为default,当类型为int时必定产生错误.下面为正确的方法: Parameter = new SqlParameter("@pname", Convert.ToInt32(0)); 这是因为如果不执行该转换,则编译器将认为您尝试调用…
C#代码  ExecuteReader(string connectionString, CommandType commandType, string commandText, params SqlParameter[] commandParameters) 以params声明的形参说明参数的个数是可选的,可以为0个或多个.以params声明的形参中含一个参数数组,则该参数数组必须位于形参列表最后:以params声明的参数数组必须是一维数组:以params声明的形参当为多个时,以","…
作用 解决恶意的T-sql语句攻击第一种 //传入参数 string ProductGroupCode, string Ismaintain, int HierarchyID, string BOMName,string BOMCode, string BOMType, int BOPStepType, int PageIndex, int PageSize, out int TotalCountpublic static DataTable GetBOPStepByBOM(string Pro…