ASP.NET 和 SQL Server 数据库导出向导






4.98/5 (59投票s)
一个用于 ASP.NET 将数据库对象导出为 CSV、TXT、HTML、XML 或 SQL 的逐步向导
目录
引言
通过本文,我想分享一个简单但有用的工具:ExportWizard,一个数据库导出的分步向导。
它引导用户完成几个简单的步骤,以选择数据库对象(表、视图或查询)、选择列,并将数据导出为任何标准格式:CSV、HTML、XML 或 SQL。
用户界面:3 个简单步骤
从数据库导出的任务可以分解如下:
- 选择源数据库对象(表、视图或查询)
- 选择要在导出中包含的列
- 选择导出格式(CSV、HTML、XML、SQL...)
这些简单的顺序任务非常适合分步向导。
本文讨论的实现是一个 Web 控件,因此下面的屏幕截图显示在 Web 浏览器中。它也可以编码为桌面应用程序,具有相同的基本元素和相同的步骤排列。
步骤 1:选择数据源
选择要从中导出数据的表、视图或 SQL 查询。
步骤 2:选择要包含的列
选择要在导出和排序选项中包含的列。
步骤 3:选择导出格式和选项
最后一步是选择导出格式和选项。
每种格式有不同的选项(使用少量 JavaScript 在不发布页面的情况下动态切换选项面板)
CSV、TXT、Excel![]() XML | HTML![]() SQL |
使用 Web 控件
该代码被封装为一个 Web 控件(用 VB.NET 编写),适用于 ASP.NET 和 SQL Server。它与 Visual Studio 及其 WYSIWYG 设计器完全集成。只需拖放即可将控件嵌入您的页面。
Web 控件属性
属性 | 描述 |
DesignStep (仅设计时) | 使您能够在设计时以 WYSIWYG 方式显示任何步骤。 |
DHTMLenabled | 确定用户是否可以显示和隐藏选项。 |
HeaderStep1 HeaderStep2 HeaderStep3 | 每个步骤的介绍性文字。建议值: |
SourceObject | 用于限制要从中导出的表或视图可能性的属性。逗号分隔的数据库对象列表。 |
SourceColumns | 默认选定的逗号分隔的列列表。 示例: SourceColumns ="ID,name,title" |
SqlConnection | 数据库的连接字符串,例如: " SERVER=(local);DATABASE=EvoDemo;UID=john;PWD=secret; "。 |
StepIndex (只读) | 当前显示的步骤的索引。
在设计时, |
事件
ExportWizard
提供一个事件 Show
。
事件 | 描述 |
显示 | 在显示时触发。事件参数是向导当前的
|
方法
GetExport
: 将数据库导出返回为 String
。
示例:GetExport
("Contact
", "Firstname
, Lastname
, PhoneW
, email
", "HTML
")
参数 | 描述 |
表格 | 要从中导出的表或视图。 |
Columns | 要导出的列列表。 可能的值: Columns ="ID,name" 或 Columns ="*" |
ExportType | 要导出的格式。 |
此外,System.Web.UI.WebControls.WebControl
的通用属性也适用。
将控件嵌入页面
要嵌入控件,请将控件 DLL 复制到 Web 应用程序的bin 目录,并在页面中添加两行代码。第一行注册控件的标签前缀(放在页面顶部)
<%@ Register TagPrefix = "EVOL" Namespace = "Evolutility.ExportWizard"
Assembly = "Evolutility.ExportWizard" %>
第二行嵌入控件。将该行放在页面中的任何位置
<EVOL:ExportWizard id= "ExportWizard1" runat = "server"
SqlConnection = "Server=(local);Database=Demo;Trusted_Connection=yes;"
</EVOL:ExportWizard>
关于代码
许多开发人员或数据库管理员之前都编写过从数据库导出的代码(如果您正在阅读本文,您很可能也写过)。这个 Web 控件是用 VB.NET 编写的,不打算扩展,但它可以处理小型数据库表。
要用表和视图列表或列列表填充下拉列表,我使用的技术是直接查询 SQL Server 系统表。
- sysobjects(包含表、视图、存储过程和触发器的名称)
- syscolumns(包含列和存储过程参数名称)
- systypes(包含 Enterprise Manager 中显示的列类型)
数据库用户必须有权访问这些系统表。这些表还可以用于 生成数据库设计文档,如另一篇文章中所述。
注释
这个 Web 控件是一个独立的 Web 控件。我还使用了一个修改版本(用 C# 编写),它集成到 Evolutility CRUD framework 中,该框架可在 上获得。
历史
- 2010 年 5 月 19 日:初始帖子