版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、-. zC* 中SqlParameter类的使用方法小结在c*中执行sql语句时传递参数的小经历1、直接写入法: 例如: int Id =1; string Name=lui; cmd.mandTe*t=insert into TUserLogin values(+Id+,+Name+); 因为Id是数值,所以在传递的时候只需要在sql字符串中用+Id+即可实现,而 Name是字符串,所以在传递的时候还需要在+Name+两边各加一个单引号来 实现;2、给命令对象添加参数法: 例如: int Id =1; string Name=lui; cmd.mandTe*t=insert into TUs
2、erLogin values(Id,Name); /上条语句中直接在sql语句中写添加的参数名,不管参数类型都是如此. SqlParameter para=new SqlParameter(Id,SqlDbT,4);/生成一个名字为Id的参数,必须以开头表示是添加的参数,并设置其类型长度,类型长度与数据库中对应字段一样 para.Value=Id;/给参数赋值 cmd.Parameters.Add(para);/必须把参数变量添加到命令对象中去。 /以下类似 para=new SqlParameter(Name,SqlDbType.VarChar,16); para.Value=
3、Name; .Parameters.Add(para); .然后就可以执行数据库操作了。声明:本帖转自 .knowsky./339188.html在此对本帖原创作者,致以最诚挚的意!=SqlParameter用法SqlParameter parameters = new SqlParameter(a, a1), new SqlParameter(b, b1) ; string strReturn = ; StringBuilder strBulResult = new StringBuilder(); foreach (SqlParameter parameter in parameters)
4、 strBulResult.Append(parameter.ParameterName); strBulResult.Append(:); strBulResult.Append(parameter.SqlValue); strBulResult.Append(n); strReturn = strBulResult.ToString();声明:本帖转自 hi.baidu./da*iongmao_adi/blog/item/d7ac6ccdd75348540eb34553.html在此对本帖原创作者,致以最诚挚的意!=SqlParameter用法 关于Sql注入的根本概念,相信不需多说,大家
5、都清楚,经典的注入语句是 or 1=1-单引号而截断字符串,or 1=1的永真式的出现使得表的一些信息被暴露出来,如果sql语句是select * from 的话,可能你整个表的信息都会被读取到,更严重的是,如果恶意使用都使用drop命令,则可能你的整个数据库得全线崩溃。当然,现在重点不是讲sql注入的害处,而是说说如何最大限度的防止注入问题。sql注入的存在在最大危害,是sql的执行语句没有和控制语句分开,我们想要select一些东西,但用户可能拼出 or 1=1甚至再加上delete/update/drop,后来是属于控制语句了,所以要防止sql的注入,就必须把查询语句与控制语句分开。Sq
6、lParameter给我们提供了一个很好的类,有了它,我们可以不现拼接字符串,也可以不再担忧单引号带来的惨剧,因为,这一切会有人来为我们完成的。简单的给个例如传统的查询语句的sql可能为string sql=select * from users where user_id=+Request.QueryStringuid+;很显然,我们在这里拼接了字符串,这就给sql注入留下了可乘之机。现在,我们要改写这样的语句,使用SqlParameter来做Sqlmand SqlCmd = new Sqlmand(sql, SqlConn);SqlParameter _userid = new SqlPa
7、rameter(uid, SqlDbType.Int);_userid.Value = Request.QueryStringu_id;SqlCmd.Parameters.Add(_userid);这样,我们可以保证外接参数能被正确的转换,单引号这些危险的字符也会转义了,不会再对库造成威胁。当然,这仅是一个例如而已,在真实的情况下,可能你还要对 Request.QueryStringu_id进展必要的检测与分析,这样才平安所以,使用参数化的sql语句,是一种很好的做法Dim sql As StringBuilder = New StringBuilder() sql.Append() sql.
8、Append(SELECT * FROM test) sql.Append( WHERE a= p1 ) Dim mand As Sqlmand = dac.Createmand(sql.ToString() dac为自己写的类 Dim param As SqlParameter = New SqlParameter() param .ParameterName = p1 param .SqlDbType = SqlDbType.NVarChar param .Value = b b为该函数的参数(ByVal b as String) mand .Parameters.Add(param) D
9、im reader As SqlDataReader = mand.E*ecuteReader()SqlParameter 构造函数SqlParameter 构造函数 (String, SqlDbType, Int32, ParameterDirection, Byte, Byte, String, DataRowVersion, Boolean, Object, String, String, String)初始化 SqlParameter 类的一个新实例,该类使用参数名、参数的类型、参数的长度、方向、精度、小数位数、源列名称、DataRowVersion 值之一、用于源列映射的布尔值、Sq
10、lParameter 的值、此 *ML 实例的架构集合所在的数据库的名称、此 *ML 实例的架构集合所在的关系架构以及此参数的架构集合的名称。程序集: System.Data在 system.data.dll 中C*public SqlParameter ( string parameterName, SqlDbType dbType, int size, ParameterDirection direction, byte precision, byte scale, string sourceColumn, DataRowVersion sourceVersion, bool source
11、ColumnNullMapping, Object value, string *mlSchemaCollectionDatabase, string *mlSchemaCollectionOwningSchema, string *mlSchemaCollectionName)参数parameterName要映射的参数的名称。dbTypeSqlDbType 值之一。size参数的长度。directionParameterDirection 值之一。precision要将 Value 解析为的小数点左右两侧的总位数。scale要将 Value 解析为的总小数位数。sourceColumn源列的
12、名称。sourceVersionDataRowVersion 值之一。sourceColumnNullMapping如果源列可为空,则为 true;如果不可为空,则为 false。value一个 Object,它是 SqlParameter 的值。*mlSchemaCollectionDatabase此 *ML 实例的架构集合所在的数据库的名称。*mlSchemaCollectionOwningSchema包含此 *ML 实例的架构集合的关系架构。*mlSchemaCollectionName此参数的架构集合的名称。备注如果未在 size 和 precision 参数中显式设置 Size 和
13、Precision,则从 dbType 参数的值推断出它们。SqlParameter 类表示 Sqlmand 的参数,也可以是它到 DataSet 列的映射。无法继承此类。有关此类型所有成员的列表,请参阅 SqlParameter 成员。System.Object System.MarshalByRefObjectVisual BasicNotInheritable Public Class SqlParameter Inherits MarshalByRefObject Implements IDbDataParameter, IDataParameter, ICloneableC*publ
14、ic sealed class SqlParameter : MarshalByRefObject, IDbDataParameter, IDataParameter, ICloneableC+public _gc _sealed class SqlParameter : public MarshalByRefObject, IDbDataParameter, IDataParameter, ICloneableJScriptpublic class SqlParameter e*tends MarshalByRefObject implements IDbDataParameter, IDa
15、taParameter, ICloneable线程平安此类型的所有公共静态Visual Basic 中为 Shared成员是线程平安的。但不保证任何实例成员是线程平安的。备注参数名称不区分大小写。例如Visual Basic, C*, C+ 下面的例如通过 SqlDataAdapter 中的 SqlParameterCollection 集合创立 SqlParameter 的多个实例。这些参数用于从数据源中选择数据并将数据放在 DataSet 中。此例如假定已经用适当的架构、命令和连接创立了 DataSet 和 SqlDataAdapter。Visual BasicPublic Sub Add
16、SqlParameters() . create myDataSet and myDataAdapter . myDataAdapter.Selectmand.Parameters.Add(CategoryName, SqlDbType.VarChar, 80).Value = toasters myDataAdapter.Selectmand.Parameters.Add(SerialNum, SqlDbType.Int).Value = 239 myDataAdapter.Fill(myDataSet)End Sub AddSqlParametersC*public void AddSql
17、Parameters()/ ./ create myDataSet and myDataAdapter/ . myDataAdapter.Selectmand.Parameters.Add(CategoryName, SqlDbType.VarChar, 80).Value = toasters; myDataAdapter.Selectmand.Parameters.Add(SerialNum, SqlDbType.Int).Value = 239; myDataAdapter.Fill(myDataSet);C+public:void AddSqlParameters()/ ./ crea
18、te myDataSet and myDataAdapter/ . myDataAdapter-Selectmand-Parameters-Add(SCategoryName, SqlDbType:VarChar, 80)-Value = Stoasters; myDataAdapter-Selectmand-Parameters-Add(SSerialNum, SqlDbType:Int)-Value = _bo*(239); myDataAdapter-Fill(myDataSet);JScript 没有可用于 JScript 的例如。假设要查看 Visual Basic、C* 或 C+
19、例如,请单击页左上角的语言筛选器按钮 。要求平台: Windows 98, Windows NT 4.0, Windows ME, Windows 2000, Windows *P Home Edition, Windows *P Professional, Windows Server 2003 系列, .NET Framework 精简版程序集: System.Data (在 System.Data.dll 中)使用SqlParameterSqlParameter p =SqlHelper.MakeInParam(EntryID,SqlDbType.Int,4,ev.EntryID),Sq
20、lHelper.MakeInParam(BlogID,SqlDbType.Int,4,ev.BlogID),SqlHelper.MakeInParam(URL,SqlDbType.NVarChar,255,DataHelper.CheckNull(ev.ReferralUrl),SqlHelper.MakeInParam(IsWeb,SqlDbType.Bit,1,ev.PageViewType);SqlHelper.E*ecuteNonQuery(conn,mandType.StoredProcedure,blog_TrackEntry,p);答疑:SqlParameter赋值之后怎么添加值
21、用Sqlmand我知道用add但我想问的是 SqlParameter例如SqlParameter parm = new SqlParameter(PARM_ORDER_ID, SqlDbType.Int);parm.Value = orderId;之后能不能再改parm添加一个值因为我写了个方法是传递SqlParameter类型的参数但有时要做些判断像SqlParameter parm = new SqlParameter(PARM_ORDER_ID, SqlDbType.Int);parm.Value = orderId;if(.)/添加一个参数E*ecuteReader(parm,);请问
22、应该怎么做呢最正确答案 int IArticle.Insert(ArticleInfo article) /如果对象存在 if (article.ID != -1) return -1; else article.ID = TableHelper.GetSequence(SQLHelper.ConnectionString, Article, ID); /统计执行成功的数量 int successCount = 0; string SQL_THIS = SQL_INSERT_ARTICLE; SqlParameter paras = GetParas(); paras0.Value = art
23、icle.ID; paras1.Value = article.Title; paras2.Value = article.DateAdded; paras3.Value = article.Te*t; paras4.Value = article.SourceUrl; paras5.Value = article.PostType; paras6.Value = article.Author; paras7.Value = article.Email; paras8.Value = article.SourceName; paras9.Value = article.BlogID; para
24、s10.Value = article.CategoryID; paras11.Value = article.Summary; paras12.Value = article.IsBySummary; paras13.Value = article.DateUpdated; paras14.Value = article.TitleUrl; paras15.Value = article.FeedBackCount; paras16.Value = article.PostConfig; paras17.Value = article.EntryName; paras18.Value = article.KeyWord; SqlConnection conn = new SqlConnection(SQLHelper.ConnectionString); successCount = SQLHelper.E*ecuteNonQuery(conn, mandType.Te*t, SQL_THIS, paras); return successCount; 声明:本帖转自 .blogs./angelfeather/articles/1225
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年宁夏小升初(数学)真题试卷带答案
- 2026年四川省成都市重点学校高一入学数学分班考试试题及答案
- 2026年天津中考数学考试(真题)含答案
- 2026年辽宁省阜新市重点学校初一入学数学分班考试试题及答案
- 磨床生产项目可行性研究报告
- 脑卒中急救试题及答案
- 第24讲 相似三角形压轴题(六大压轴母题型)(教师版)-新九年级数学暑假讲义(北师大版)
- 湖南株洲市部分校2025-2026学年高一下学期期末联合考试语文试题(文字版含答案)
- 黑龙江大庆市祥阁学校 2025-2026学年度第二学期六年级生物学学科期末考试试卷(文字版含答案)
- 专题14:高频素材积累与中考作文景物描写句段-八年级语文下册单元写作深度指导与中考点睛
- 牛保才事迹课件
- 【全科医学概论5版】第04章 以家庭为单位的健康照顾
- 超星尔雅学习通《中华民族共同体概论(云南大学)》章节测试附答案
- 印刷行业佣金合同范本
- 2025年湖南省事业单位招聘考试教师招聘体育学科专业知识试卷
- 第一次月考试卷(Unit1-2)(含答案含听力原文无听力音频)-2025-2026学年人教版PEP(三起)英语五年级上册
- (正式版)DB23∕T 1318-2020 《黑龙江省建设施工现场安全生产标准化实施标准》
- 腹壁切口疝诊疗指南(2024版)解读课件
- 晚期肿瘤病人护理
- 汽车维修厂安全生产教育培训内容
- 咳嗽与咳痰讲课件
评论
0/150
提交评论