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

MS Access数据库查询编辑器

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.91/5 (22投票s)

2009年7月6日

GPL3

8分钟阅读

viewsIcon

157800

downloadIcon

9528

一个非常有生产力、易于使用的工具,用于编辑您针对 MS Access 数据库的 Sql 查询

下载 QueryEditor_v0.0.2.7.zip - 288.07 KB

引言

尝试创建一个 MS Access 的 Union 查询,或者 Update 查询,或者 Insert 查询………

如果你想查看(或编辑)Sql 查询,如果查询有点长………

那里的编辑器很糟糕……是的,它就是这样。

字体大小不改变……关键字不着色……,

有时表名很难记住,你必须记住表/查询/列名(或去它们的位置复制粘贴)

我认为提到的内容足以让我对那个编辑器感到厌倦并制作自己的编辑器………

无论如何……这是一个 Windows 应用程序,在 VB.Net 2008 IDE 上开发,

一个非常有生产力、易于使用的工具,用于编辑您的 Sql 查询。

优点

我们将通过这个小教程了解它的优势。

  1. 连接到新数据库: anyway 对你来说不是难事。
  2. 将当前查询保存到文件: anyway 对你来说也不是难事。
  3. 数据库架构
    当您连接到新的数据库时,您将看到一个包含其对象(查询-表-列)的树状结构。
    树中的每个列都有一个图标,描述其数据类型。
    在这个树状结构中,您将看到一个子树,其中包含可用于创建查询的函数。
    您可以将表名、查询名、列名或函数名从树状结构拖放到编辑器中………
  4. 关键字着色

    您将看到您的查询被很好地着色,可读性更强,所以,您甚至可以根据自己的喜好更改着色,并且它会保存您的偏好设置供以后使用。

  5. 添加参数

    它提供了一个网格供您输入参数名称和值,以用于参数化查询。

  6. 自动完成

    当您按 (Ctrl + Space) 时,它会提供自动完成功能,自动完成列表包含您可以在查询中使用的所有内容(表名、查询名、列名、函数名、参数名),如果您开始输入某个词,然后按 (Ctrl + Space),自动完成列表将进行过滤,使其只包含以您已输入的部分开头的单词。然后您可以通过三种可用方式之一选择您喜欢的列表项(鼠标双击它、在选中时按空格键,或在选中时按 Enter 键),

    当您从列表中选择目标时,它将替换您已输入的单词部分。

    任何时候您不想使用已显示的自动完成列表,都可以按 ESC 键,或单击列表外的区域,

    (稍后我们将讨论技术细节)。

  7. 7. 注释和执行选定部分

    我知道……我知道……MS Access 查询不支持注释。如果用户正在犹豫不决,用户不确切知道要写什么( yet),他/她正在从某个来源获取信息,并且需要执行其中的一部分,

    用户 anyway 会成为一名程序员,并且他/她必须知道,他/她将无法在此编辑器中按原样使用查询。

    因此,对于“执行选定部分”,我认为无需多说,用户所要做的就是在编辑器中选择一部分已写文本并执行,

    无论如何,您可以通过在行前面加上双破折号 -- 来创建“单行注释”,或通过在此行前面加上 /* 并在此行后面加上 */ 来创建“多行注释”(只需用 /* */ 将其括起来!)。

  8. 文本转代码

    它提供了一个漂亮的工具,可以将查询语句转换为可在 VB.Net 或 C# 语言中使用的代码。

    这个好主意灵感来源于一位伟大的男人(其大部分代码都是他写的),他通过他的书籍和 博客 使我受益匪浅,他就是 Turki Al-asiri

  9. 将输出导出到 Excel

    它提供了三种导出网格输出到 Excel 表格的方式。我知道一种方式就足够了,但我希望这个工具比商业工具或辅助工具更能教育您,所以您将看到三种导出数据到 Excel 表格的方式(还有更多)。

    (稍后我们将讨论技术细节)。

  10. 友好的用户界面

    只需探索菜单及其快捷方式。以及数据库对象的上下文菜单。

缺点

  1. 添加参数
  2. 不幸的是,输入参数化查询不会将参数添加到参数列表中,太糟糕了,您必须手动输入它们。
  3. 海量数据

    我很抱歉地说,当涉及到大数据(非常大的数据)时,结果不会很好。它将变得不可预测,可能需要很长时间才能结束(非常长的时间:分钟),或者可能会崩溃(上帝保佑)。

  4. 相对惰性的数据库模式获取

    这是一个技术问题。它之所以变得惰性,是因为为了使后续使用更快(例如填充树状结构、数据库对象自动完成列表……等)而进行的操作。

  5. 惰性关键字着色(仅长查询)
  6. 不幸的是,长查询变得太慢,无法着色关键字。

    现在我认为我将把它留在这里……也许将来我可以做一个更紧密的着色算法(我很抱歉,我现在做不到,我未来 5-6 个月会很忙……也许)。

    您会问我一个问题,要多久才能感觉到减慢?

    1. 嗯……为了记录,一个 1000 个字符的查询感觉不到。
    2. 您的查询中的字符串(引号 ')和别名(括号 [])越多,速度就越慢。

示例

我将把它们作为屏幕截图放上来,我认为前面提到的内容提供了足够的说明,所以不需要更多的评论。

示例 1

Parameters.gif

示例 2

Transform.gif

示例 3

Proc.GIF

技术细节

  1. 自动完成

    连接到 Northwind.mdb 示例数据库,假设您尝试编写以下语句

    Select [CategoryName] From [Categories]

    并且因为某个原因您想更改选定的列

    从 [CategoryName] 到 [CategoryID],您会尝试删除它的末尾并尝试使用自动完成工具,就像这样

    Select [Category From [Categories]

    现在您按下了 (Ctrl + Space) 并且自动完成列表已打开……您选择了所需的列并按下了 (Enter) …………惊喜………………您得到了这个

    Select [[CategoryID] From [Categories]

    自动完成工具会忽略非单词字符来完成单词

    非单词字符(括号、逗号、美元符号、星号……等)。

    不酷,但您需要考虑这一点。

  2. 惰性关键字着色(仅长查询)

    惰性着色背后的原因是,用于着色单词的工具 (RichTextBox) 每次文本在工具中更改时都会尝试对所有文本进行着色……这需要时间……。

    我尝试制作另一个算法,只着色当前受影响的行,它仍然很慢,

    我尝试制作另一个算法,只着色当前受影响的单词,它仍然很慢,

    我认为以后需要考虑这个问题。

  3. 将数据导出到 Excel

    此工具使用三种方式导出数据到 Excel,我之前提到过,我希望此工具能对您有所启发,

    讽刺的是,Excel 2003 比 Excel 2007 更能识别格式(当然 Excel 2007 确实能识别它们,但不是以其自身的扩展名“*.xlsx”格式,而是以“*.xls”扩展名识别它们)。

    您看,如果您编写了一个 HTML 表格文件并将其保存为“*.xls”,Excel 2003 会识别它,但 Excel 2007 不会以“*.xlsx”扩展名识别它,但会以“*.xls”扩展名识别它。

    如果您编写了一个 XML 文件(以特殊格式)并将其保存为“*.xls”,Excel 2003 会识别它,但 Excel 2007 不会以“*.xlsx”扩展名识别它,但会以“*.xls”扩展名识别它。

    [ 要了解这种特殊的 XML 格式,请打开 Excel 2003,创建您的工作表,使用 Excel 进行格式化,然后选择“另存为”对话框中的“XML 电子表格”,保存它,然后用记事本打开它,它非常容易理解。]

    [ 用于创建 XML 的代码是 **Xodiak** 在他这里一篇关于 codeproject 的文章中编写的 C# 函数的一个混合版本,在这里,我将其转换为 VB.Net 并按我喜欢的方式重新组织了它]

    另一种方式(但我们没有使用),如果您编写了一个制表符分隔的文件并将其保存为“*.xls”,Excel 2003 会识别它,但 Excel 2007 不会以“*.xlsx”扩展名识别它,但会以“*.xls”扩展名识别它。

    使用的最后一种方式是使用 Excel 应用程序来完成工作,它要求用户安装 Excel,并且它是上述方式中最慢的一种。

    我希望您能从中获得宝贵的信息和想法,从而帮助您在创建其他应用程序时。

  4. 我需要了解什么才能理解代码
  5. 代码使用了一些您需要理解的技术才能看到代码是如何工作的。
    1. Linq to Objects
      它被用于代码的各个地方,并且您甚至无法在不至少有所了解的情况下阅读代码。别担心,我已经为您在阿拉伯语中找到了一些教程,在这里,还有一个网站用英语讨论了它,在这里
    2. 正则表达式
      它被用来搜索文本以着色关键字,并且您确实需要至少有所了解,这里在 CodeProject 上有一个很好的教程(这是我所读过的一切),在这里  

    您会在随附的 zip 文件中找到该文章的副本,在项目资源中,或者您也可以从应用程序的帮助菜单中获取。

    祝您查询愉快。

© . All rights reserved.