代码生成利器-NCodeGenerate 教程(5) 多种数据库的支持
来源:互联网 发布:sql查询语句大全讲解 编辑:程序博客网 时间:2024/06/05 03:47
NCodeGenerate 支持多种数据库,目前系统支持 MySql,SqlServer ,Oracle 。 MySql和SqlServer 是系统自带的。Oracle 数据库的支持是有博友 @查小广提供的,非常感谢。
NCodeGenerate 对各种数据库的支持是通过插件动态加载的。各种数据库的支持放在程序目录下的子目录 SchemaProviders 下面。
要实现对其他数据库的支持很简单。只要实现两个接口就可以了。这两个接口是:IDbSchemaProvider,IDbConnectionStringEditor。
第一个接口 IDbSchemaProvider 只要提供获取数据库结构的能力,是必须实现的。
using System; using System.Data; namespace NCodeGenerate.DBSchema { /// <summary> /// IDbSchemaProvider /// </summary> public interface IDbSchemaProvider { /// <summary> /// 名称 /// </summary> string Name { get; } /// <summary> /// 描述 /// </summary> string Description { get; } /// <summary> /// 获取数据库名称 /// </summary> /// <param name="connectionString">connectionString</param> /// <returns>数据库名称</returns> string GetDatabaseName(string connectionString); /// <summary> /// 获取数据库扩展属性 /// </summary> /// <param name="connectionString">connectionString</param> /// <param name="schemaObject">schemaObject</param> /// <returns>扩展属性数组</returns> ExtendedProperty[] GetExtendedProperties(string connectionString, SchemaObjectBase schemaObject); /// <summary> /// 设置扩展属性 /// </summary> /// <param name="connectionString">connectionString</param> /// <param name="schemaObject">schemaObject</param> void SetExtendedProperties(string connectionString, SchemaObjectBase schemaObject); /// <summary> /// 获取表结构数组 /// </summary> /// <param name="connectionString">connectionString</param> /// <param name="database">database</param> /// <returns>表结构数组</returns> TableSchema[] GetTables(string connectionString, DatabaseSchema database); /// <summary> /// 获取表列数组 /// </summary> /// <param name="connectionString">connectionString</param> /// <param name="table">table</param> /// <returns>表列数组</returns> ColumnSchema[] GetTableColumns(string connectionString, TableSchema table); /// <summary> /// 获取视图结构数组 /// </summary> /// <param name="connectionString">connectionString</param> /// <param name="database">database</param> /// <returns>视图结构数组</returns> ViewSchema[] GetViews(string connectionString, DatabaseSchema database); /// <summary> /// 获取视图列数组 /// </summary> /// <param name="connectionString">connectionString</param> /// <param name="view">view</param> /// <returns>视图列数组</returns> ViewColumnSchema[] GetViewColumns(string connectionString, ViewSchema view); /// <summary> /// 获取视图文本 /// </summary> /// <param name="connectionString">connectionString</param> /// <param name="view">view</param> /// <returns>视图文本</returns> string GetViewText(string connectionString, ViewSchema view); /// <summary> /// 获取表主键 /// </summary> /// <param name="connectionString">connectionString</param> /// <param name="table">table</param> /// <returns>表主键</returns> PrimaryKeySchema GetTablePrimaryKey(string connectionString, TableSchema table); /// <summary> /// 获取表键数组 /// </summary> /// <param name="connectionString">connectionString</param> /// <param name="table">table</param> /// <returns>表键数组</returns> TableKeySchema[] GetTableKeys(string connectionString, TableSchema table); /// <summary> /// 获取索引数组 /// </summary> /// <param name="connectionString">connectionString</param> /// <param name="table">table</param> /// <returns>索引数组</returns> IndexSchema[] GetTableIndexes(string connectionString, TableSchema table); /// <summary> /// 获取表数据 /// </summary> /// <param name="connectionString">connectionString</param> /// <param name="table">table</param> /// <returns>表数据</returns> DataTable GetTableData(string connectionString, TableSchema table); /// <summary> /// 获取视图数据 /// </summary> /// <param name="connectionString">connectionString</param> /// <param name="view">view</param> /// <returns>视图数据</returns> DataTable GetViewData(string connectionString, ViewSchema view); /// <summary> /// 获取命令数组 /// </summary> /// <param name="connectionString">connectionString</param> /// <param name="database">database</param> /// <returns>命令数组</returns> CommandSchema[] GetCommands(string connectionString, DatabaseSchema database); /// <summary> /// 获取命令参数数组 /// </summary> /// <param name="connectionString">connectionString</param> /// <param name="command">command</param> /// <returns>命令参数数组</returns> ParameterSchema[] GetCommandParameters(string connectionString, CommandSchema command); /// <summary> /// 获取命令文本 /// </summary> /// <param name="connectionString">connectionString</param> /// <param name="command">command</param> /// <returns>命令文本</returns> string GetCommandText(string connectionString, CommandSchema command); /// <summary> /// 获取命令结果数组 /// </summary> /// <param name="connectionString">connectionString</param> /// <param name="command">command</param> /// <returns>命令结果数组</returns> CommandResultSchema[] GetCommandResultSchemas(string connectionString, CommandSchema command); /// <summary> /// 测试连接 /// </summary> /// <param name="ConnectionString">ConnectionString</param> /// <param name="Error">错误文本</param> /// <returns>bool</returns> bool TestConnection(string ConnectionString,out string Error); } }
第二个接口 IDbConnectionStringEditor ,给NCodeGenerate 提供一个编辑连接字符串的功能。
using System; namespace NCodeGenerate.DBSchema { public interface IDbConnectionStringEditor { string ConnectionString { get; } bool EditorAvailable { get; } bool ShowEditor(string currentConnectionString); } }
这个接口非常简单,只有两个属性,一个方法需要实现。
ConnectionString 返回编辑好的连接字符串。 EditorAvailable 返回是否实现了编辑界面 ,如果实现了返回 true,就可以了。 ShowEditor,传入 连接字符串,调用编辑界面,如果编辑界面点击确定就返回 true,否则返回 false。
下面附上 MySql 的实现供大家参考,也欢迎网友实现其他的数据库。
下载地址为:http://download.csdn.net/detail/ncodegenerate/4958237
一、代码生成利器-NCodeGenerate 是什么?
二、代码生成利器-NCodeGenerate 教程(1) 遍历数据库内的所有表
三、代码生成利器-NCodeGenerate 教程(2) NCodeGenerate的代码公用之一
四、代码生成利器-NCodeGenerate 教程(3) 生成代码到文件.
五、 代码生成利器-NCodeGenerate 教程(4) CodeSmith模板转换
六、代码生成利器-NCodeGenerate 教程(5) 多种数据库的支持
七、代码生成利器-NCodeGenerate 教程(6) 调试功能 Trace 输出
八、代码生成利器-NCodeGenerate 教程(7) 揭开调试功能 的神秘面纱
九、代码生成利器-NCodeGenerate 教程(8) 揭开Razor模板引擎的神秘面纱
十、代码生成利器-NCodeGenerate 教程(9) 数据类型映射Map功能
- 代码生成利器-NCodeGenerate 教程(5) 多种数据库的支持
- 代码生成利器-NCodeGenerate 教程(2) NCodeGenerate的代码公用之一
- 代码生成利器-NCodeGenerate 教程(3) 生成代码到文件.
- 代码生成利器-NCodeGenerate 是什么?
- 代码生成利器-NCodeGenerate 教程(4) CodeSmith模板转换
- 代码生成利器-NCodeGenerate 教程(6) 调试功能 NTrace 输出
- 代码生成利器-NCodeGenerate 教程(9) 数据类型映射Map功能
- 代码生成利器-NCodeGenerate 教程(1) 遍历数据库内的所有表
- 代码生成利器-NCodeGenerate 教程(7) 揭开调试功能 的神秘面纱
- 代码生成利器-NCodeGenerate 教程(8) 揭开Razor模板引擎的神秘面纱
- 分享个根据数据库生成Model的工具,支持多种开发语言,多种数据库
- asp.net生成高质量缩略图通用函数c#代码,支持多种生成方式 - asp.net 教程
- rollup,支持多种打包方式的前端利器
- C# Code Builder V1.2 (C#代码生成器) 产生支持多种数据库的实体代码
- C# Code Builder V1.2 (C#代码生成器) 产生支持多种数据库的实体代码
- 支持多种数据库的管理工具:navicat premium
- 通用的数据库操作类(支持多种数据库)
- .NET通用的数据库操作类(支持多种数据库)
- array_merge函数合并
- 批处理发送邮件
- 素数表
- 开发WebView中的细节处理
- Jsoup解析html
- 代码生成利器-NCodeGenerate 教程(5) 多种数据库的支持
- Linux 各目录及每个目录的详细介绍
- 批处理替换文本文件中的字符串,并保留换行
- 视图实现圆角效果的三种方法及比较
- 如何定义与实现一个类的成员函数的回调函数 .
- SPN(Service Principal name)服务器主体名称
- 2012年十大经典品牌营销事件
- 杭电Hd 2045 不容易系列之(3)—— LELE的RPG难题
- Microsoft Enterprise Library 简介,Microsoft Enterprise Library 5.0体验微软最新技术应用于企业信息平台下载