如何编写支持参数化查询的数据库类

时间:2009-03-05 00:27:50

标签: asp.net ado.net class-design

我是以前的经典ASP程序员,有时是PHP程序员编写我的第一个ASP.NET应用程序。我喜欢大大改进的ADO.NET函数,但我觉得需要编写一个数据库类。部分我想整合实际与数据库交互的代码,部分我想减少重复的感觉。

一个简单的数据库类并不难,但我使用参数化查询作为我的安全措施之一。我正在努力将其融入课堂。我编写了一个函数,通过传入表和列名来返回数据库中列的数据类型,但我想不出从SQL查询中获取表名和列名的可靠方法。

我的类设计是使用Query()函数进行选择,使用Execute()函数进行插入/更新/删除。 (并不反对拥有更多的公共功能,但不想超越自己。)这两个函数都为参数提供了一个SQL字符串和一个SortedList。可以通过在SQL字符串中查找参数名称并查看等号前面来获取列名。同样,在查询插入,更新或删除时获取表名应该相当简单,因为您一次只能处理一个表。最大的问题是选择,因为可能有一个或多个连接,内部选择等等。

我是朝着错误的方向前进的吗?我没有想到的任何事情都会让我的生活变得更轻松或更困难?有人用任何可以提供建议的语言为此写了一个课程吗?

4 个答案:

答案 0 :(得分:5)

不要重新发明轮子。查看nHibernateLINQToSQL(或LINQToEntities)了解您的ORM需求。

答案 1 :(得分:1)

第二次呼叫找到一个适合你的经过试验和测试的轮子,特别是如果这是你第一次涉足aspnet ......还有很多让你忙碌的事情。

会为SubSonic添加一个建议,它可能比nHibernate稍微轻一点,但它实际上取决于你的项目的性质,它们都是很棒的工具,而且两者都节省了我几个月的工作量。最近几年。

答案 2 :(得分:1)

我认为,由于这是您在ASP.NET中的第一次体验,因此建议您查看Linq to SQL。执行some tutorials以便在尝试编写任何Linq查询代码之前了解其工作原理。

我认为在你的情况下不使用Linq to SQL的唯一原因是你不使用SQL Server(或者现在或将来需要支持其他数据库),或者你不能使用.NET 3.5运行时出于某种原因。

祝你好运

答案 3 :(得分:0)

听起来像你的“简单数据库类”隐藏了需要使用它的类中的太多细节。

我编写了包含SqlCeEngine的类并公开了类似“LookupDescription(String Code)”的方法......我认为这种设计是你应该研究的。并且,考虑研究LINQ。它有很多可供选择。