SqlHelper详解

上传人:s9****2 文档编号:564905012 上传时间:2024-01-02 格式:DOC 页数:22 大小:271.50KB
返回 下载 相关 举报
SqlHelper详解_第1页
第1页 / 共22页
SqlHelper详解_第2页
第2页 / 共22页
SqlHelper详解_第3页
第3页 / 共22页
SqlHelper详解_第4页
第4页 / 共22页
SqlHelper详解_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《SqlHelper详解》由会员分享,可在线阅读,更多相关《SqlHelper详解(22页珍藏版)》请在金锄头文库上搜索。

1、SqlHelper详解(转载)SqlHelper 类实现详细信息SqlHelper 类用于通过一组静态方法来封装数据访问功能。该类不能被继承或实例化,因此将其声明为包含专用构造函数的不可继承类。 在 SqlHelper 类中实现的每种方法都提供了一组一致的重载。这提供了一种很好的使用 SqlHelper 类来执行命令的模式,同时为开发人员选择访问数据的方式提供了必要的灵活性。每种方法的重载都支持不同的方法参数,因此开发人员可以确定传递连接、事务和参数信息的方式。在 SqlHelper 类中实现的方法包括: ExecuteNonQuery。此方法用于执行不返回任何行或值的命令。这些命令通常用于执

2、行数据库更新,但也可用于返回存储过程的输出参数。 ExecuteReader。此方法用于返回 SqlDataReader 对象,该对象包含由某一命令返回的结果集。 ExecuteDataset。此方法返回 DataSet 对象,该对象包含由某一命令返回的结果集。 ExecuteScalar。此方法返回一个值。该值始终是该命令返回的第一行的第一列。 ExecuteXmlReader。此方法返回 FOR XML 查询的 XML 片段。 除了这些公共方法外,SqlHelper 类还包含一些专用函数,用于管理参数和准备要执行的命令。不管客户端调用什么样的方法实现,所有命令都通过 SqlCommand

3、对象来执行。在 SqlCommand 对象能够被执行之前,所有参数都必须添加到 Parameters 集合中,并且必须正确设置 Connection、CommandType、CommandText 和 Transaction 属性。SqlHelper 类中的专用函数主要用于提供一种一致的方式,以便向 SQL Server 数据库发出命令,而不考虑客户端应用程序调用的重载方法实现。SqlHelper 类中的专用实用程序函数包括: AttachParameters:该函数用于将所有必要的 SqlParameter 对象连接到正在运行的 SqlCommand。 AssignParameterValu

4、es:该函数用于为 SqlParameter 对象赋值。 PrepareCommand:该函数用于对命令的属性(如连接、事务环境等)进行初始化。 ExecuteReader:此专用 ExecuteReader 实现用于通过适当的 CommandBehavior 打开 SqlDataReader 对象,以便最有效地管理与阅读器关联的连接的有效期。 SqlHelper体验谈:以下载自CEOCIO(MVP/CSDN_WEB开发版主)的Blog():微软提供的Data Access Application Block中的SQLHelper类中封装了最常用的数据操作,各个使用者调用他而写的代码也有很大区

5、别。对于一个返回DataSet的方法我原来是这样写的:复制到剪贴板CODE:public DataSet GetDepartmentMemberList(int departmentID)trystring sql = OA_Department_GetDepartment_Members;string conn = ConfigurationSettings.AppSettingsstrConnection;SqlParameter p = SqlHelper.MakeInParam(departmentID,SqlDbType.Int,4,departmentID);DataSet ds

6、= SqlHelper.ExecuteDataset(conn,CommandType.StoredProcedure,sql,p);return ds;catch(System.Data.SqlClient.SqlException er)throw new Exception(er.Message);现在我是这样来写的:/连接字符串复制到剪贴板CODE:private string _connectionString = ConfigurationSettings.AppSettingsstrConnection;public string ConnectionStringget retu

7、rn this._connectionString;set this._connectionString = value;public DataSet GetNewsToIndexPage(int NewsTypeID)return GetDataSet(yzb_GetNewsToIndexPage,GetNewsToIndexPage_Parameters(NewsTypeID);/设置存储过程参数复制到剪贴板CODE:private SqlParameter GetNewsToIndexPage_Parameters(int NewsTypeID)SqlParameter p = SqlH

8、elper.MakeInParam(NewsTypeID,SqlDbType.Int,4,NewsTypeID);return p;/这里才真正调用SqlHelper复制到剪贴板CODE:private DataSet GetDataSet(string sql, params SqlParameter p)return SqlHelper.ExecuteDataset(ConnectionString,CommandType.StoredProcedure,sql,p);代码更加灵活,更加安全了:P做为一个懒人,大笨狼51aspx我经常这样写:复制到剪贴板CODE:System.Data.D

9、ataTable dt=SqlHelper.ExecuteDataset(SqlHelper.CONN_STRING_NON_DTC,CommandType.Text,sql).Tables0; 直接返回DataTable, 返回表集合基本不用,只返回一个table用于绑定。 string conn = ConfigurationSettings.AppSettingsstrConnection; 我写在SqlHelper.CONN_STRING_NON_DTC里面 MakeInParam代码烦琐,如果查询输入条件不可能有组合SQL, 我直接exec pronamr paraargs 如果查询

10、输入条件存在安全问题,或者带返回参数 再用复制到剪贴板CODE:SqlParameter queryParam=new SqlParameter new SqlParameter(UserID,SqlDbType.Int) ; queryParam0.Value=this.UserID; 组合sql语句用到和string.Format技巧.例如:复制到剪贴板CODE:sql=UPDATE Test_User_StatisticSET Test_User_Statistic.IsQualified=0, Test_User_Statistic.Reason=1WHERE UserID=2 ;sq

11、l= string.Format(sql,IsQualified,Reason,userID);SqlHelper.ExecuteNonQuery(SqlHelper.CONN_STRING_NON_DTC,CommandType.Text,sql);其中sql语句可以借助SQL的查询分析器生成。这么干要保证安全,如果有输入漏洞,建议还是用SqlParameter缓存参数,因为它会把攻击性的代码,比如带单引号分号的,当作普通字符处理。 Enterprise Library: Data Access Application Block使用向导2007年09月25日 星期二 下午 04:20Dat

12、a Access Application Block有如下好处:l减少编写重复累赘代码去执行标准的任务。l帮助在应用程序内部和跨企业应用维护一致的数据访问实践。l降低改变物理数据目标的难度。l减轻开发人员学习不同数据库类型的不同编程模型。l当移植应用程序到不同数据库类型时,减少重写代码的数量。Data Access Application Block依赖项:lData Access Application Block依赖其他的application blocks和Enterprise Library中的代码。lConfiguration Application Block Data Acces

13、s Application Block使用该Configuration Application Block读取配置信息。lCommon类库功能,如instrumentation 提供不同功能用来显示事件和系统管理的数据。l此外,application block使用XML文件存放配置信息,推荐采用Enteprise Library配置工具来修改这些配置信息。使用Enteprise Library配置工具创建配置文件:创建DemoDAAP应用程序,使用Configuration Console配置app.config文件。应注意Connection String的设置,在本示例中,设置Integ

14、rated Security为False,并添加User ID和Password参数及其参数值,Database属性值为Northwind。选择合适的重载方法每一个数据访问方法均有许多重载,如下的描述和指导帮助你选择合适的重载:l一些重载方法接受DBCommandWrapper对象,DBCommandWrapper在一个对象内同时封装了command和参数。允许你同时增加输入/输出参数和设置这些参数的类型。这些重载提供了很好的灵活性和对每一个方法的控制。l一些重载方法接受存储过程和存储过程参数集合,当调用仅有输入参数的存储过程时,调用这些重载比较方便。l一些重载方法接受System.Data.CommandType和字符串命令,当执行在线的SQL语句或没有参数的存储过程时,调用这些重载比较方便。l最后,上述的每一个重载都包含一个接受事务的重载方法,当在现有事务内执行方法时,允许你使用合适的重载类型。未完,Part 2待续。* Updated *Enterprise Library: Data Access Application Block使用向导,Part 2 *作者:Rickie Lee (rickieleemail#)本文参

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号