首页  >  文章  >  数据库  >  『练手』003 Laura.SqlForever如何扩展 兼容更多数据库引擎

『练手』003 Laura.SqlForever如何扩展 兼容更多数据库引擎

WBOY
WBOY原创
2016-06-07 15:10:44969浏览

003 Laura.SqlForever 如何扩展 兼容更多数据库引擎 数据库引擎插件 在 界面上的体现 导航窗体 的 工具栏 中的 引擎下拉列表 导航窗体 的 树形控件 中的 引擎主节点 登录窗体 的 登陆面板 综上 扩展一个 数据库引擎 最终 会有三个 地方的 UI 体现 而 工具栏

 003 Laura.SqlForever如何扩展 兼容更多数据库引擎

 

数据库引擎插件 在 界面上的体现

       导航窗体 的 工具栏 中的 引擎下拉列表

『练手』003 Laura.SqlForever如何扩展 兼容更多数据库引擎

       导航窗体 的 树形控件 中的 引擎主节点

『练手』003 Laura.SqlForever如何扩展 兼容更多数据库引擎

       登录窗体 的 登陆面板

『练手』003 Laura.SqlForever如何扩展 兼容更多数据库引擎

 

综上

扩展一个 数据库引擎 最终 会有三个 地方的 UI体现

而 工具栏,菜单栏,右键菜单,子节点 则有 另外的扩展 方式

 

具体代码





『练手』003 Laura.SqlForever如何扩展 兼容更多数据库引擎

 

代码详解

以上图代码为例:

特性 中: Caption 将在 界面展示 时 显示的文本

       Key     程序内部 处理时 的键值(不区分大小写)

       DbEngineType       当前引擎的类型(和 当前类名 保持一致)

       Image     数据库引擎 图标(不指定 其实也没有关系)



『练手』003 Laura.SqlForever如何扩展 兼容更多数据库引擎

 

数据类型转换接口

       >这里就不列出 接口需要实现 的函数,只顺带说说 这个接口存在的思想:

>Laura.SqlForever 能够实现 跨数据库 的 结构迁移 数据迁移;

>但是 不同的数据库引擎 数据类型 各不相同;

>于是 Laura.SqlForever 实现了 统一类型:所有 数据库类型 和 统一类型 的 互转 是跨数据库类型的核心思想;

 

操作数据库结构接口

       >包括 读取 数据库 库结构,表结构  &  创建 数据库 库结构,表结构;

 

登陆面板获取函数 GetLoginPanel()

       >该函数 将 返回一个 UI控件,这个 控件最终 被显示 到 登录窗体中;

 

创建主数据库节点函数 CreateDataEngineNode()

       >该函数 将 返回一个 TreeNode控件,这个 主节点具体的子节点 Laura.SqlForever 不予干涉;

 

数据库引擎 树形节点 扩展

Laura.SqlForever 对 树形控件 主引擎的节点 其实不予干涉 —— 开发者 有 自己的自由;

但是 Laura.SqlForever 对 树形控件 的 节点扩展 也提供了 额外封装:

       >以简化 扩展代码 的复杂度

       >封装 多线程,在节点 展开时 才 异步获取数据,改善用于体验

       >具体 是 DbTreeNode  DbFolderTreeNode 两个 基类

具体代码




『练手』003 Laura.SqlForever如何扩展 兼容更多数据库引擎

代码 就 不予详解

>上面 IDataTableFolderNode 只是一个 标记接口(没有任何 函数),加上 这个接口 的节点 将具备 Laura.SqlForever 内置 的 右键菜单项 新建表(N) …”

>不继承 IDataTableFolderNode 也不会影响 程序运行,只不过 这个节点 将失去一个 右键菜单项 而已 —— 而你,可以选择 不使用 内置的右键菜单,自己扩展 右键菜单项;

       >    『练手』003 Laura.SqlForever如何扩展 兼容更多数据库引擎

这里的 “新建表(N)…”是 内置右键菜单项 (只针对 IDataTableFolderNode 节点)

这里的 “刷新(F)”是 内置的右键菜单项(针对 任何 节点)

 

 

 

Ps.   具体更多 详细信息,可以参见 Laura.SqlForever 的详细源码

Laura.SqlForever 完全开源,任何 企业或个人 都可以 剪切,复制,删除,更改 Laura.SqlForever 的任何代码片段。

 

 

 

                                                             舒小龙

                                                        2014-02-12 16:38

 

 

 

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn