65.9K
CodeProject 正在变化。 阅读更多。
Home

数据库助手 v 2.0.0

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.68/5 (70投票s)

2008年6月11日

CPOL

8分钟阅读

viewsIcon

214792

downloadIcon

21745

一个开源代码生成工具,具有一些有用的功能,可以自动生成存储过程、表的类以及存储过程的 .NET 代码。

DatabaseHelper

背景

当我们想要创建数据库应用程序时,我们必须反复与数据库进行交互。在代码层面,对于每一次数据库交互,我们都必须创建一个连接,定义将要执行的命令,最后获取任何结果。数据库访问代码常常很麻烦,而且对于高性能数据库应用程序来说,它并不是优化的。为了在更短的时间内以更高的性能创建数据库应用程序取得最佳结果,最佳实践是将数据访问层与我们的主应用程序代码分开。数据库助手正是为此目的服务,并帮助我们更轻松、更快速地生成数据库应用程序。

关于数据库助手

数据库助手是一款开源应用程序,有助于编程和与数据库交互。它有三个有用的工具,将在以下各节中进行描述。

  1. 在数据库层面生成存储过程代码
  2. 为数据库中的每个表生成 .NET(VB 和 C#)单类和集合类(BLL)
  3. 为存储过程和一些其他有用的方法生成 .NET(VB 和 C#)代码(DAL)

在数据库中生成存储过程代码

此工具为每个表创建 5 个存储过程,包括 SelectAllSelectRowInsertUpdateDelete。我要感谢 Keramati 先生编写了这个 工具 并将源代码提供给我与其他工具合并。他最初的版本为选定的表生成 5 个过程,但我已将其定制为生成数据库中所有表的 5 个存储过程。Keramati 先生也已单独在 CodePlex 上发布了他的源代码。

此工具的输出是一个名为 Sql 的文件夹,其中包含一个扩展名为 .sql 的文件,其中包含为数据库中所有表生成的所有存储过程。

生成 .NET 类(业务逻辑层)

此工具为每个表创建两个类。第一个类可以帮助您以更强的类型安全方式编写代码,第二个类是第一个类的 Collection 类(继承自 CollectionBase 类),用于在内存中保存数据行,类似于 DataTable。这允许以强类型的方式处理许多行,您甚至可以将 DataGridView.DataSource 绑定到此对象。这些类可以以 C# 或 VB.NET 语言生成,并且位于与数据库同名的 namespace 中。

此工具的输出是一个名为 BLL 的文件夹,其中包含一个 .NET 源文件,其中包含从数据库中的表生成的所有类。

为存储过程生成 .NET 代码(数据访问层)

此工具从数据库中提取所有存储过程,并为每个过程创建一个方法,包括方法参数(如果有)。换句话说,它将为您创建数据访问层。

所有生成的​​方法都返回一个 DataTable 对象,如果 DataTable.Rows > 0,则否则,返回的 DataTable 对象没有有效的行。

它还生成以下附加方法,以便更轻松地与数据库进行交互。

  1. 构造函数的第一个重载,它以完整的连接字符串作为参数。您可以通过 ConnectionString 属性访问连接字符串。
  2. 构造函数的第二个重载,它接受两个参数 ServerNameDataBaseName,并创建一个 Trusted Connection。您可以通过 ConnectionString 属性访问连接字符串。
  3. 构造函数的第三个重载,它接受 ServerNameDatabaseNameUserNamePassword 作为参数,并创建一个 Untrusted Connection。您可以通过 ConnectionString 属性访问连接字符串。
  4. GetData():此方法以 SqlCommand 对象作为参数,并以 DataTable 对象的形式返回查询结果。注意:您不需要将连接传递给 SqlCommand 对象的构造函数。它将在 GetData() 方法内部初始化。
  5. ExecNonQuery():此方法执行非查询 SQL 命令,并且与 GetData() 一样,以 SqlCommand 对象作为参数。然后它返回一个 int 作为结果。

此工具的输出是一个名为 DAL 的 .NET 源文件,其中包含 Database 命名空间中的一个名为 DAL 的类。

数据库助手如何工作

数据库助手使用非常简单,只需按照以下步骤操作:

  1. 在相应的组合框中输入数据源。
  2. 点击 Connect 按钮加载您服务器上的所有数据库(这需要几分钟)。加载数据库后,每个数据库节点都有两个子节点:Stored ProceduresTables
  3. 选择您要为其生成代码的数据库(或指定数据库的每个子节点)。
  4. 在输出部分,选择一个选项。如果您想在数据库级别生成存储过程的 T-SQL 代码,请选择 Generate Stored Procedures 单选按钮。如果您想为现有存储过程生成 .NET 代码并创建数据访问层,请选择 Generate Code for Stored Procedures (DAL) 单选按钮并选择代码生成语言。
  5. 如果您想为表生成 .NET 类代码,请选中(可选)Generate Tables Classes (BLL) 复选框,并选择代码生成语言。
  6. 选择结果的输出路径。
  7. 点击 Generate Code 按钮。数据库助手将在指定的目录中生成输出结果。如果输出是 .NET 代码,则必须将其添加到您的项目中,并添加一个 using 指令。

如何使用示例项目

下载本文档附带的示例文件并解压缩。如果您在 Sql Server Management Studio (SSMS) 中运行 TestDb_Script.sql,它将创建一个名为 TestDB 的示例数据库,其中包含一个名为 Student 的表以及一些用于操作的记录。

接下来,从调试文件夹运行 DbHelper,初始化连接选项(DataSource、User、Password 等),然后单击 Connect。当前 DataSource 上的所有数据库都将被加载。选择我们之前创建的 TestDb 数据库。

由于此数据库没有存储过程,因此在输出中,选择 Generate Stored Procedures,选择目录路径(在此模式下语言不重要),然后单击 Generate Code。使用 SSMS 打开创建的文件(例如,Your Path\Sql\TestDB_Sps.Sql)并在您的 TestDb 数据库中运行它。

然后,再次运行 DbHelper(或者如果您没有关闭它,则再次单击 Connect),然后再次选择 TestDb 数据库。

在输出中,选择 Generate Code for Stored Procedures (DAL),并勾选 Generate Tables Classes (BLL)。选择一种语言和路径,然后单击 Generate Code。一个名为 DAL.csDAL.vb 的类源文件将被创建,其中包含存储过程和数据访问层的代码,以及一个名为 BLL 的文件夹,其中包含 TestDb.csTestDb.vb,其中包含所有表的类代码。您必须将这些文件和 using 指令添加到您的解决方案中。

数据库助手 v 2.0.0 中的新功能(插件)

此版本的数据库助手有一个小型 SDK 来扩展其功能。插件是 *.dll 文件,存在于 PlugIns 文件夹中,例如 PlugIns\SamplePlugInforDbHelper.dll。程序启动时,它会读取 PlugIns 文件夹中的可用插件,并自动将它们添加到 PlugIns 菜单中。当用户从 PlugIns 菜单中选择一个 PlugIn 时,该插件将执行。

要为数据库助手创建新插件,请按照以下步骤操作:

  1. 创建一个新的 Class Library 项目。
  2. 添加对 DatabaseHelperSdk.dll 的引用。
  3. 创建一个实现 IPlugIn 接口的新类(该接口位于 DatabaseHelperSdk 命名空间中)。
  4. 实现 IPlugIn 接口中定义的三个方法。
    • InitializeComponent:此方法是初始化插件并将其添加到 PlugIns 菜单的主要方法。
    • Author:此方法包含有关插件作者的信息。
    • Description:此方法包含插件的描述。
  5. InitializeComponent 方法中为您的插件菜单创建 Click event,并在选择插件时实现其事件处理程序方法来执行插件代码。
  6. 编译您的项目,并将创建的程序集(扩展名为 .dll)保存在 Database Helper\PlugIns 文件夹中。现在当数据库助手启动时,您应该会在 PlugIns 菜单中看到您的插件。

有关如何创建插件的更多信息,请从本文档顶部的 URL 下载 SamplePlugin 项目。

历史

版本 1.0.0

数据库助手是用 C# 2.0 编写的,源代码可从上述 URL 获取。为了生成 .NET 代码,我使用了 System.CodeDomSystem.CodeDom.Compiler 命名空间。为了加载数据库信息,我使用了 SQLDMO.dll 库。这个库相当不错,但加载数据库信息需要很长时间。

2.0.0版本

在 2.0.0 版本中,我使用了 Smo(SQL Server Management Objects)而不是 Dmo(Distributed Management Objects)来更轻松地处理 Sql Server(2005)并使用完整的​​多线程(感谢 Anonymous Delegates)。数据库信息加载算法得到了优化,使得加载数据库信息的速度大约快了 10 倍。

数据库助手 2.0 版本的新版本有一些重要的变化如下:

  1. 使用 SMO(SQL Server Management Objects)代替 DMO(Distributed Management Objects)来加载数据库信息。
  2. 更改了数据库信息加载算法以实现完全多线程,速度提高了约 10 倍。
  3. 更改了 Insert 存储过程,以使用所有类型,包括字符、整数和唯一标识符。在 1.0.0 版本中,它仅适用于整数。
  4. 更改了 .NET 代码中的 Insert 方法,以使用 out 关键字返回插入的记录。
  5. 添加了插件支持并为其创建了 SDK 以促进第三方开发。(可以从本文档顶部的 URL 下载示例插件应用程序)

最后

感谢您阅读我的文章,希望您喜欢。如果您遇到任何问题或有任何疑问,请发电子邮件给我:sst.server@gmail.com

此致,
Hamed Vaziri。

© . All rights reserved.