在ADO.NET中用参数化查询缩短开发时间

简介:
一段时间以来,存储过程一直是企业应用程序开发数据访问的首选方法。存储过程的安全性更高、封装能力更强,并能执行复杂的逻辑,且不会打乱应用程序代码。但是,它也存在一些缺点:

• 开发者倾向于在存储过程中加入商业逻辑。

• 更改过程时必须改变开发环境。

• 查找过程所需的参数比较费时。

• 许多时候,存储过程提供的功能超出所需。

  嵌入到应用程序代码中的内联SQL代码是数据访问的另一个常见方法。虽然企业在开发过程中很少用到这种方法,但许多小型项目应用这种类型的数据访问方法。应用内联SQL可以实现快速开发,但它并不具有存储过程的安全与封装优势。

  参数化查询介于存储过程与内联SQL之间。它为数据访问程序开发提供一种安全、封装性的方法,并允许你利用内联SQL的快速开发优势。

  如何应用参数化查询

  应用参数化查询并不那么容易。例如,下面的代码(图A)说明如何编写参数化查询:

在ADO.NET中用参数化查询缩短开发时间

                                                                   图A 参数化查询

  在这个例子中,我们选择所有具有指定CustomerID的用户。注意,这个过程与在一个存储过程中编写Select语句十分相似。其不同在于你将它直接嵌入你的应用程序代码或源文件中。(我们稍后再讨论源文件。)

  为使ADO.NET能够移植@CustomerID参数,你只需简单建立一个正常的SqlParameter并将它加入到当前命令的SqlCommand.Parameters集中。然后你就可在希望的连接上执行命令,ADO.NET则建立在SQL服务器上执行的命令。下面的代码片断(图B)是一个说明如何建立并执行整个命令的例子:

在ADO.NET中用参数化查询缩短开发时间

图B 整个命令

  如你所见,建立并执行参数化查询是一个非常简单的过程。在数据访问库——如微软的数据应用程序块——的辅助下,这个过程可以进一步简化。

  参数化查询的缺点

  说到编程,每种方法都有其优缺点,决定应用参数化查询也不例外。它的一个主要的缺点在于:由于查询被嵌入到应用程序代码中,可能在几个地方都以同样的查询结束。我可以建立一个存储查询的中心位置来消除这种重复。这个位置可以是一个XML文件、在应用程序中的一个带公共静态字符串成员的类、一个自定义的.NET属性、或者是一个空文件。应用这些技巧,你就可以在执行前查找到所需的查询。

  应用参数化查询的另一个潜在问题是许多公司并不允许在其应用程序(以及数据层)中使用内联SQL。我认为这是因为人们在谈论将SQL插入应用程序代码时,他们指的是特别(内联)代码,而不是参数化查询。这样的规则也使DBA对在SQL服务器上执行代码有了更大的控制权,这对大型数据库十分有利。

  何时应使用参数化查询?

  在任何需要在SQL服务器上执行操作的情况下,你都可以应用参数化查询。但是,参数化查询主要应用于需要执行的创建、阅读、更新与删除(CRUD)操作。如果你在执行需要较长时间或由不同SQL语句构成的复杂操作,最好将此操作保留在SQL服务器中。

  虽然参数化查询在许多情况下应用起来十分方便,但由于它可能会打乱你的应用程序代码,所以我并不推荐你在复杂的数据操作逻辑中应用它。当你的应用程序代码被打乱时,你必然会遇到严重的代码维护问题。

  在编写数据访问程序的许多情况下,与特别查询与存储过程相比,参数化进程不失为一个较好的选择。参数化查询介于其他两种选择之间,如果应用得当,能够显著提高开发效率。

目录
相关文章
|
1月前
|
人工智能 前端开发 Devops
.NET技术在现代开发中的作用:.NET技术的核心价值、在现代应用开发中的实际应用、以及面临的挑战与未来趋势。
.NET技术是软件开发领域的核心力量,本文从其核心价值、实际应用及未来挑战三方面进行探讨。它支持多种语言,提供强大的开发工具和丰富的类库,并具备跨平台能力。在现代应用开发中,.NET广泛应用于企业级系统、Web应用、移动应用、云服务和游戏开发等领域。面对性能优化、容器化、AI集成等挑战,.NET持续创新以适应不断发展变化的技术环境。
48 4
|
1月前
|
人工智能 开发框架 .NET
.NET技术的强大功能:.NET技术的基础特性、在现代开发中的应用、以及它如何助力未来的软件开发。
.NET技术是软件开发领域的核心支柱,以其强大功能、灵活性及安全性广受认可。本文分三部分解析:基础特性如多语言支持、统一运行时环境;现代应用如企业级与Web开发、移动应用、云服务及游戏开发;以及未来趋势如性能优化、容器化、AI集成等,展望.NET在不断变化的技术环境中持续发展与创新。
59 4
|
1月前
|
人工智能 开发框架 .NET
如何掌握.NET技术,引领开发前沿:.NET技术的核心能力、在现代开发中的应用实践、以及如何通过.NET技术实现持续创新。
.NET技术已成为软件开发不可或缺的部分,本文分三部分探讨:核心能力如多语言支持、统一运行时环境、丰富的类库及跨平台能力;现代开发实践包括企业级应用、Web与移动开发、云服务及游戏开发;并通过性能优化、容器化、AI集成等方面实现持续创新,使开发者站在技术前沿。
45 3
|
9天前
|
存储 运维
.NET开发必备技巧:使用Visual Studio分析.NET Dump,快速查找程序内存泄漏问题!
.NET开发必备技巧:使用Visual Studio分析.NET Dump,快速查找程序内存泄漏问题!
|
9天前
|
SQL 关系型数据库 数据库
七天.NET 8操作SQLite入门到实战详细教程(选型、开发、发布、部署)
七天.NET 8操作SQLite入门到实战详细教程(选型、开发、发布、部署)
|
9天前
|
消息中间件 开发框架 前端开发
YuebonCore:基于.NET8开源、免费的权限管理及快速开发框架
YuebonCore:基于.NET8开源、免费的权限管理及快速开发框架
|
14天前
|
开发框架 JavaScript 前端开发
|
19天前
|
JSON C# 开发者
💡探索C#语言进化论:揭秘.NET开发效率飙升的秘密武器💼
【8月更文挑战第28天】C#语言凭借其强大的功能与易用性深受开发者喜爱。伴随.NET平台演进,C#持续引入新特性,如C# 7.0的模式匹配,让处理复杂数据结构更直观简洁;C# 8.0的异步流则使异步编程更灵活高效,无需一次性加载全部数据至内存。通过示例展示了模式匹配简化JSON解析及异步流实现文件逐行读取的应用。此外,C# 8.0还提供了默认接口成员和可空引用类型等特性,进一步提高.NET开发效率与代码可维护性。随着C#的发展,未来的.NET开发将更加高效便捷。
35 1
|
1月前
|
人工智能 前端开发 开发工具
.NET技术的开发潜力是巨大的,其核心优势和广泛应用不断推动着软件开发的进步
.NET技术自推出后已成为软件开发的关键力量。本文分三部分探讨其开发潜力:核心优势如统一平台、强大工具与跨平台能力;现代应用中的创新,包括企业级与Web应用、移动开发、云服务及游戏制作;以及面对的挑战与未来机遇,如性能优化、容器化支持、AI集成等。.NET的持续发展正塑造着软件行业的未来。
66 1
|
16天前
|
C# Windows 开发者
超越选择焦虑:深入解析WinForms、WPF与UWP——谁才是打造顶级.NET桌面应用的终极利器?从开发效率到视觉享受,全面解读三大框架优劣,助你精准匹配项目需求,构建完美桌面应用生态系统
【8月更文挑战第31天】.NET框架为开发者提供了多种桌面应用开发选项,包括WinForms、WPF和UWP。WinForms简单易用,适合快速开发基本应用;WPF提供强大的UI设计工具和丰富的视觉体验,支持XAML,易于实现复杂布局;UWP专为Windows 10设计,支持多设备,充分利用现代硬件特性。本文通过示例代码详细介绍这三种框架的特点,帮助读者根据项目需求做出明智选择。以下是各框架的简单示例代码,便于理解其基本用法。
54 0