在数据库管理和开发过程中,编写和编辑SQL查询是一个常见且重要的任务。然而,传统的编辑器往往功能有限,无法满足开发者对于高效、易用工具的需求。本文将介绍一个使用VB.Net2008 IDE开发的Windows应用程序——一个专为SQL查询编辑而设计的高效工具。
这个工具的优势在于它提供了一个直观、易用的界面,使得连接数据库、保存查询、查看数据库架构等操作变得轻而易举。
通过这个工具,连接到新的数据库变得非常简单。用户只需几步操作即可轻松连接到数据库,无需复杂的配置。
用户可以随时将当前的查询保存到文件中,方便后续的查看和编辑。
当用户连接到新的数据库时,工具会展示一个包含数据库对象(查询、表、列)的树状结构。每个列在树中都会有一个图标来描述其数据类型。此外,树中还会展示一个子树,包含在创建查询时可以使用的函数。用户可以通过拖放的方式,将表名、查询名、列名或函数名从树中拖放到编辑器中。
工具会对查询中的关键字进行着色,提高可读性。用户还可以根据自己的喜好更改颜色,工具会保存用户的偏好设置,以便下次使用。
工具提供了一个网格,用户可以输入参数的名称和值,以用于参数化查询。
当用户按下(Ctrl + Space)时,工具会提供自动补全功能。补全列表包含了查询中可能使用到的所有内容(表名、查询名、列名、函数名、参数名)。如果用户已经开始输入某个单词,并按下(Ctrl + Space),补全列表将被过滤,只包含以已输入部分单词开头的单词。用户可以通过双击、选中后按空格键或回车键从列表中选择目标,选中的目标将替换已输入的部分单词。如果用户不想使用已显示的自动补全列表,只需按ESC键或鼠标点击列表外即可。
工具提供了一个功能,可以将查询语句转换成VB.Net或C#语言的代码。这个功能受到了一位伟大的程序员的启发,他的书和博客为作者提供了灵感。
工具提供了三种方式将网格输出导出到Excel表格中。作者希望这个工具不仅仅是一个商业或辅助工具,而是一个教育工具,因此提供了多种导出方式。
用户可以通过探索菜单和它们的快捷方式,以及数据库对象的上下文菜单,来熟悉这个工具。
尽管这个工具有很多优势,但它也有一些不足之处。
遗憾的是,输入参数化查询时,参数不会自动添加到参数列表中,用户需要手动输入。
当处理大量数据时,这个工具的表现可能不尽如人意。它可能会花费很长时间来完成操作,或者在处理过程中崩溃。
这是一个技术问题。为了使后续使用更快(例如填充树、数据库对象自动补全列表等),工具在获取数据库架构时表现得相对懒惰。
遗憾的是,长查询的关键字着色可能会变得懒惰。作者可能会在未来改进着色算法,但目前由于工作繁忙,暂时无法实现。
示例将以屏幕截图的形式展示。之前提到的功能已经提供了足够的说明,因此不需要更多的评论。
这个工具使用了一些技术,用户需要理解这些技术,才能理解代码的工作原理。
例如,当用户连接到Northwind.mdb示例数据库并尝试编写以下语句时:
SELECT [CategoryName] FROM [Categories]
如果用户想要更改选中的列,从[CategoryName]更改为[CategoryID],他们可能会尝试删除它并使用自动补全工具,如下所示:
SELECT [Category FROM [Categories]
现在用户按下(Ctrl + Space),打开了自动补全列表... 选择了需要的列并按下(Enter),结果如下:
SELECT [[CategoryID] FROM [Categories]
自动补全工具在补全单词时,会忽略非单词字符(括号、逗号、美元符号、星号等)。这不是一个完美的解决方案,但用户需要考虑这一点。
关键字着色之所以懒惰,是因为用于着色单词的工具(RichTextBox)在工具中的文本每次更改时都尝试着色所有文本,这需要时间。作者尝试过制作一个只着色当前受影响行的算法,但仍然很慢。
这个工具使用三种方式将数据导出到Excel。作者希望这个工具不仅仅是一个商业或辅助工具,而是一个教育工具。讽刺的是,Excel 2003比Excel 2007更能够识别格式(当然Excel 2007也可以识别,但不是在其自己的扩展名"*.xlsx"中,而是在"*.xls"扩展名中)。
例如,如果写一个HTML-Table文件并将其保存为"*.xls",Excel 2003会识别它,但Excel 2007不会在"*.xlsx"扩展名中识别它,但会在"*.xls"扩展名中识别它。如果写一个XML文件(在特殊格式中)并将其保存为"*.xls",Excel 2003会识别它,但Excel 2007不会在"*.xlsx"扩展名中识别它,但会在"*.xls"扩展名中识别它。
[要了解这个XML特殊格式,请打开Excel 2003,创建工作表,用Excel格式化它,然后在[另存为]对话框中选择"XML SpreadSheet",保存它,然后用记事本打开它,它是非常容易理解的。]
[用于XML创建的代码是一个C#函数的混合版本,由Xodiak在CodeProject中的文章中编写,作者将其转换为VB.Net并重新组织成自己喜欢的方式。]
另一种方式(但没有使用),如果写一个制表符分隔的文件并将其保存为"*.xls",Excel 2003会识别它,但Excel 2007不会在"*.xlsx"扩展名中识别它,但会在"*.xls"扩展名中识别它。
最后一种方式是使用Excel应用程序来完成工作,它要求用户安装Excel,这是提到的所有方式中最慢的方式。
希望这个工具能为提供大量的信息和想法,帮助在其他应用程序中使用。
代码使用了一些技术,需要理解这些技术,才能理解代码的工作原理。
它在代码中被广泛使用,至少需要对它有所了解,才能阅读代码。不用担心,作者已经为准备了一些教程(阿拉伯语的在这里,英语的在这里)。
它被用来在文本中搜索关键字,至少需要对它有所了解。CodeProject中有一个非常好的教程(这是作者读过的关于它的所有内容)在这里。