在代码中进行SQL查询的正确方法?

时间:2013-01-14 21:20:58

标签: c# .net sql sql-server

我在Visual Studio中使用SQL Server。我正在制作一个网络应用程序。

我创建了一个包含表和关系的数据库。

我需要在C#中编写能够进行选择,更新,删除,查询等功能。有没有人能够正确理解这一点,以保证事情的清洁和安全?

我的意思是,我应该如何建立连接,如何返回数据,处理故障等?

我发现的大多数教程似乎都没有使用最佳实践。

5 个答案:

答案 0 :(得分:6)

你有没有充分的理由不使用ORMEntity FrameworkLinq to SQLNHibernate,仅举几例。除非你正在做一些非常复杂的SQL语句,否则ORM每次都是合乎逻辑的选择。它将处理连接,提供一定程度的安全性(即采取措施避免SQL注入),以及使代码更容易阅读和维护。

答案 1 :(得分:1)

微软最佳实践“du jour”是实体框架。否则,像NHibernate这样的ORM也是一个很好的选择。

答案 2 :(得分:1)

一些选择:

  1. 实体框架,被认为是许多地方的最佳实践。
  2. Linq to SQL,再次做得很好。
  3. 其他ORM,流行的ORM通常都是不错的做法
  4. 通过存储过程编写自己的后端界面,这不是最佳实践,绝对不是节省时间,但如果您不熟悉ORM及其较小的应用程序,这可能会更快。
  5. 编辑:最佳做法是不使用内联SQL查询,我错误地说它们为SQL注入打开了漏洞,但如果你做得对,你可以安全地这样做。我应该说的是,如果你想要最好的练习,不要使用它们。主要是因为下线,一些其他程序员可能正在处理你的代码,看看你做了内联SQL,如果他们不了解SQL注入,他们可能会做出允许漏洞的更改。通过完全避免内联SQL,您不仅可以避免出于安全性方面的错误,而且它在某种程度上是一种防御性编程技术,因为未来的程序员如果不使用内联SQL则不太可能使用内联SQL首先。希望不要混淆:)

答案 3 :(得分:1)

如果它是一个相对较小/简单的应用程序,也许你不需要像NHibernate或Entity Framework这样的完整ORM。

您可以改用Micro ORM。这些更简单的库不提供EF和NH可以执行的所有操作,但它们都能够将查询映射到对象列表。
如果您的应用程序不是非常复杂,也许这对您来说足够了。

最着名的.NET微型ORM是:

答案 4 :(得分:0)

在我看来,使用表和关系的最简洁方法是使用ObjectDataSource,然后使用Databind控制并将所有查询放入SP。

其次是使用Entity Framework和Linq-to-SQL

将连接字符串放入web.config文件中,并使用Singleton类获取Connection对象。