在代码中进行SQL查询的正确方法
本文关键字:方法 查询 SQL 代码 | 更新日期: 2023-09-27 17:53:34
我在Visual Studio中使用SQL Server。我正在做一个web应用程序。
我创建了一个包含表和关系的数据库。
我将需要在c#中编写函数,能够进行选择,更新,删除,查询等。谁有什么正确的方法来做到这一点,以保持清洁和安全?
我的意思是,我应该如何建立连接,我应该如何返回数据,处理失败,等等?
我找到的大多数教程似乎都没有使用最佳实践。
是否有不使用ORM的好理由?实体框架,Linq to SQL, NHibernate,只是举几个例子。除非您正在执行一些非常复杂的SQL语句,否则ORM总是合乎逻辑的选择。它将处理连接,提供一定程度的安全性(即采取措施避免SQL注入),以及使您的代码更易于阅读和维护。
微软目前的最佳实践是实体框架。否则,像NHibernate这样的ORM也是一个不错的选择。
如果它是一个相对较小/简单的应用程序,也许你不需要像NHibernate或实体框架这样成熟的ORM。
您可以使用Micro ORM代替。这些都是更简单的库,不提供EF和NH所能做的一切,但它们都能够将查询映射到对象列表。
如果你的应用程序不是超级复杂,也许这对你来说已经足够了。
最著名的。net Micro orm有:
- Dapper (由Stack Overflow的家伙制作和使用) 大规模
- PetaPoco
几个选项:
- 实体框架,在许多地方被认为是最佳实践。
- Linq to SQL,又是一个很好的实践。
- 其他ORM,流行的ORM通常是很好的实践
- 通过存储过程编写自己的后端接口,这不是最佳实践,也绝对不节省时间,但如果你不熟悉ORM,而且它是一个较小的应用程序,这可能会更快。
EDIT:最佳实践是不要使用内联SQL查询,我错误地说它们为SQL注入打开了漏洞,但是如果你做对了,你可以安全地这样做。我应该说的是,如果你想获得最佳实践,就不要使用它们。主要是因为,一些其他程序员可能会在你的代码中看到你使用了内联SQL,如果他们不知道SQL注入,他们可能会做出允许漏洞的更改。通过完全避免内联SQL,您不仅可以避免在安全方面犯错误,而且它在某种程度上是一种防御性编程技术,因为如果您一开始不使用内联SQL,将来的程序员就不太可能使用它。希望这不会让你感到困惑:)
在我看来,使用表和关系的最干净的方法是使用ObjectDataSource,然后使用Databind来控制并将所有查询放入sp。
第二个是使用实体框架和Linq-to-SQL
将您的连接字符串放到web中。配置文件,并使用Singleton类获取Connection对象。