存储过程生成器
此工具为选定的表创建基本的 Select、Insert、Update 和 Delete 存储过程。
引言
如果我们使用数据集作为数据访问对象,每次创建新项目时,在数据库设计完成后,我们都希望为每个表创建基本的存储过程,例如Select
、Insert
、Update
和 Delete
。 如果一个表有 10 列,编写不需要动脑筋的令人讨厌的存储过程真是令人头疼。 我决定创建一个实用程序,可以为我们一键创建这些存储过程(对于选定数据库中的所有表)。
背景
我创建此应用程序的动机是自动化存储过程,因此为了浏览服务器和数据库,我从Michael Potter那里抄袭了代码。 您可以从此链接找到他的文章。
Using the Code
首先,此实用程序允许您浏览可用的服务器

选择数据库后,您需要选择一个有效的数据库。 如果您知道您想要什么,您只需键入这两个。 对于数据库,前提是:您必须提供在该特定服务器中创建的有效用户名和密码,并且它应该有权访问您要选择的数据库。

选择数据库后,您可以单击“获取表”按钮。 这会触发一个事件(存储过程)以获取所选数据库中的所有表名。
CREATE PROCEDURE DBO.TableNameSelect
(
@TableCatalog AS VARCHAR(100)
) AS
SELECT Table_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'
and TABLE_CATALOG = @TableCatalog
and TABLE_NAME <> 'dtproperties'
GO
这会显示如下所示的表

您可以选择要创建的存储过程:Select
、Insert
、Update
和 Delete
。 选择后,单击“创建过程”按钮,系统将通过以下存储过程获取每个表的所有列。
CREATE PROCEDURE DBO.ColumnNameSelect
(
@TableName AS VARCHAR(100)
) AS
SELECT COLUMN_NAME, DATA_TYPE,CHARACTER_MAXIMUM_LENGTH
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_Name = @TableName
GO
附注:系统搜索上述存储过程,如果找不到,则会创建它,所以不用担心。
系统现在拥有它需要的所有数据。 现在我们可以根据需要创建存储过程。 例如,要创建“Select 存储过程
”,我们可以执行类似这样的操作
try
{
selectBuilder.AppendLine(string.Format("[{0}Select] ( @{1} AS INT) AS ",
tableName, columnTable.Rows[0]["Column_Name"]));
selectBuilder.AppendLine("SELECT ");
foreach (DataRow row in columnTable.Rows)
{
selectBuilder.Append(string.Format("[{0}],", row["Column_Name"]));
}
selectBuilder = RemoveLastComma(selectBuilder);
selectBuilder.AppendLine(string.Format(" FROM [{0}] ", tableName));
selectBuilder.Append(string.Format("WHERE [{0}] = @{0}",
columnTable.Rows[0]["Column_Name"]));
DataAccess.CreateProcedure(selectBuilder.ToString(), connection);
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
关注点
在创建此实用程序时,我只是想到可以创建一个企业对象框架,它可以作为此框架的扩展。 好吧,我将继续这样做。
附注:代码创建并审核创建的存储过程。
历史
- 2007 年 6 月 20 日:初步帖子