sqlhelper使用指南
您是否正在从事 .net 应用程序数据访问代码的设计和开发?您是否觉得自己总是在反复编写相同的数据访问代码?您是否曾经将数据访问代码包装在 helper 函数中,以便能够在一行中调用存储过程?如果是,那么 microsoft® data access application block for .net 正是为您设计的。
data access application block 将访问 microsoft sql server™ 数据库的性能和资源管理方面的非常好的经验封装在一起。您可以很方便地在自己的 .net 应用程序中将其作为构造块使用,从页减少了需要创建、测试和维护的自定义代码的数量。
尤其是,data access application block 可以帮助您:
- 调用存储过程或 sql 文本命令。
- 指定参数详细信息。
- 返回 sqldatareader、dataset 或 xmlreader 对象。
例如,在引用了 data access application block 的应用程序中,您可以简单地在一行代码中调用存储过程并生成 dataset,如下所示:
[visual basic]
dim ds as dataset = sqlhelper.executedataset( _
connectionstring, _
commandtype.storedprocedure, _
"getproductsbycategory", _
new sqlparameter("@categoryid", categoryid))
[c#]
dataset ds = sqlhelper.executedataset(
connectionstring,
commandtype.storedprocedure,
"getproductsbycategory",
new sqlparameter("@categoryid", categoryid));
注意:application block for .net(用于 .net 的应用程序块)是基于对成功的 .net 应用程序进行详细研究而设计的。它以源代码的形式提供,您可以原样使用,也可以针对自己的应用程序进行自定义。该应用程序块并不代表未来 microsoft ado.net 程序库的发展方向。microsoft ado.net 程序库是为在各种使用情况下实现对数据访问行为的精确控制而建立的。将来的 ado.net 版本可能会使用不同的模型来实现这个方案
sqlhelper 类提供了一组静态方法,可以用来向 sql server 数据库发出许多各种不同类型的命令。
sqlhelperparametercache 类提供命令参数缓存功能,可以用来提高性能。该类由许多 execute 方法(尤其是那些只运行存储过程的重写方法)在内部使用。数据访问客户端也可以直接使用它来缓存特定命令的特定参数集。
使用 sqlhelper 类执行命令
sqlhelper 类提供了五种 shared (visual basic) 或 static (c#) 方法,它们是:executenonquery、executedataset、executereader、executescalar 和 executexmlreader。实现的每种方法都提供一组一致的重载。这提供了一种很好的使用 sqlhelper 类来执行命令的模式,同时为开发人员选择访问数据的方式提供了必要的灵活性。每种方法的重载都支持不同的方法参数,因此开发人员可以确定传递连接、事务和参数信息的方式。类中实现的所有方法都支持以下重载:
[visual basic] execute* (byval connection as sqlconnection, _ byval commandtype as commandtype, _ byval commandtext as string) execute* (byval connection as sqlconnection, _ byval commandtype as commandtype, _ byval commandtext as string, _ byval paramarray commandparameters() as sqlparameter) execute* (byval connection as sqlconnection, _ byval spname as string, _ byval paramarray parametervalues() as object) execute* (byval transaction as sqltransaction, _ byval commandtype as commandtype, _ byval commandtext as string) execute* (byval transaction as sqltransaction, _ byval commandtype as commandtype, _ byval commandtext as string, _ byval paramarray commandparameters() as sqlparameter) execute* (byval transaction as sqltransaction, _ byval spname as string, _ byval paramarray parametervalues() as object) [c#] execute* (sqlconnection connection, commandtype commandtype, string commandtext) execute* (sqlconnection connection, commandtype commandtype, string commandtext, params sqlparameter[] commandparameters) execute* (sqlconnection connection, string spname, params object[] parametervalues) execute* (sqlconnection connection, commandtype commandtype, string commandtext) execute* (sqlconnection connection, commandtype commandtype, string commandtext, params sqlparameter[] commandparameters) execute* (sqlconnection connection, string spname, params object[] parametervalues)除这些重载以外,除 executexmlreader 之外的其他方法还提供了另一种重载:允许将连接信息作为连接字符串而不是连接对象来传递,如下面的方法签名所示: