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

从 SQL 创建数据库文件生成数据库网页

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.08/5 (6投票s)

2006 年 6 月 29 日

2分钟阅读

viewsIcon

20091

downloadIcon

312

从 SQL 创建数据库文件生成数据库网页

Sample image

引言

我们经常需要开发与数据库相关的应用程序,并且有很多文件来描述数据库结构,例如数据库设计、创建数据库的 SQL 脚本等。那么有没有一种简单的方法来管理这些文件呢?在这里,我分享我的方法。

准备好了吗?

首先,我们需要知道需要运行 SqlDoc vbscript 文件的内容。我已经在源代码文件中添加了一个示例文件,你可以现在下载它,其中包含一个示例 dbpm_iv.sql 文件,它在 SQL Server 2k5 中创建一个数据库。啊,我为我的应用程序使用了 Sql Server 2k5,它也可以与 Sql Server 2k 配合使用。

运行 SqlDoc.vbs

双击 SqlDoc.vbs 文件,你将看到一个小的对话框显示“完成”工作。然后你可以在当前文件夹中找到一个 db_design.html 文件。这就是我们想要的。

如何实现它?

首先,你可能需要了解一些关于正则表达式的知识,因为我解析 SQL 语句的所有内容都是通过正则表达式实现的。

需要正则表达式的帮助吗?这里推荐一个好的网站供你学习:正则表达式参考 - 基本语法

我使用了以下正则表达式来获取 *.sql 文件中的对象。

dim rxDatabase, rxTable, rxPK, rxFK, rxColumn, rxTableSummary
rxColumn = "([a-zA-Z0-9]+)\s+(int identity|int|char|varchar|nvarchar|bit)\s?(\([\d\s,]+\))?\s?(not null|null)?\,\s?(/\*([^\*/]+)\*/)?"
'group info: 0 - columnName,1 - type, 2 - range, 3 - null?

rxDatabase = "create\s+database\s+([0-9a-zA-Z]+)"
'group info: 0 - databaseName

rxTable = "create\s+table\s+([0-9a-zA-Z]+)"
'group info: 0 - tableName

rxPK = "primary\s+key\s+\(([0-9a-zA-Z]+)\)"
'group info: 0 - PK columnName

rxFK = "foreign\s+key\s+\(([0-9a-zA-Z]+)\)"
'group info: 0 - FK columnName

rxTableSummary = "/\*\s?summary:\s?(.+)\*/"
'group info: 0 - summary text

注意:在 vbscript 和其他语言(例如 C#)中使用正则表达式之间存在差异。

然后,我将这些对象(数据库、表、列、主键、外键、表摘要)的文本格式化为 HTML 表格,就像页面顶部的图像一样。

就这样了。请从源代码中获取更多详细信息,代码就是一切。

关于我的第一篇文章

哦,这是我在 CP 上发表的第一篇文章。如果你发现任何不好的地方,请给我一些建议。(而且我的英语不如我的母语——中文好,请原谅我糟糕的英语)。

© . All rights reserved.