`
guanhuaing
  • 浏览: 1197970 次
文章分类
社区版块
存档分类
最新评论

MyGeneration获取所有ORACLE数据库的数据库名数据表命列名称

 
阅读更多

使用MyGeneration自动生成代码工具获取所有ORACLE数据库的数据库名数据表命列名称的具体操作步骤如下:
一、设置MyGeration的Default Settings中的数据库链接字符串Provider=OraOLEDB.Oracle.1;Password=myPassword;Persist Security Info=True;User ID=myID;Data Source=myDataSource
二、复制下面代码到Interface Code选项卡的窗体中

public class GeneratedGui : DotNetScriptGui
{
public GeneratedGui(ZeusContext context) : base(context) {}

//-----------------------------------------
// The User Interface Entry Point
//-----------------------------------------
public override void Setup()
{
// ** UNCOMMENT CODE BELOW TO SEE UI **

//ui.Width = 100;
//ui.Height = 100;
//GuiLabel lblDemo = ui.AddLabel("lblDemo", "Demo", "Demo Tooltip");
//ui.ShowGui = true;

//GuiLabel lblPath;
//GuiTextBox txtNamespace;
GuiComboBox cmbDatabase;
GuiComboBox cmbTable;
GuiComboBox cmbColumn;

ui.Title = "读取所有数据表";
ui.Width = 450;
ui.Height = 500;
ui.BackColor = "wheat";
ui.ShowGui = true;
//添加窗体控件
ui.AddLabel("lblPath","输出路径: ","Select the output path.");
string sOutputPath = "";
if( input.Contains("defaultOutputPath"))
{
sOutputPath = input["defaultOutputPath"].ToString();
}
//输出文件保存路径
ui.AddTextBox("txtPath", sOutputPath, "Select the Output Path.");
ui.AddFilePicker("btnPath", "选择路径", "Select the Output Path.", "txtPath", true);
//程序命名空间
ui.AddLabel("lblNamespace", "命名空间: ", "Provide your objects namespace.");
ui.AddTextBox("txtNamespace", "ZTE.TMobileUpdate", "Provide your objects namespace.");
//数据库下拉框
ui.AddLabel("lblDatabases", "数据库选择:", "Select a database in the dropdown below.");
cmbDatabase=ui.AddComboBox("cmbDatabase", "Select a database.");
setupDatabaseDropdown(cmbDatabase);
cmbDatabase.AttachEvent("onchange","cmbDatabase_onchange");
//数据表选择
ui.AddLabel("lblTables", "数据表选择:", "Select tables from the listbox below.");
cmbTable = ui.AddComboBox("cmbTable", "Select tables:");
setupTablesDropdown(cmbDatabase,cmbTable);
cmbTable.AttachEvent("onchange","cmbTable_onchange");
//视图选择
ui.AddLabel("lblColumns", "字段选择:", "Select columns from the listbox below.");
cmbColumn = ui.AddComboBox("cmbColumn", "Select columns:");

}

public void setupDatabaseDropdown( GuiComboBox Databases )
{
try
{
if( MyMeta.IsConnected )
{
Databases.BindData( MyMeta.Databases );
//判断数据库列表是否为空
if( MyMeta.DefaultDatabase != null )
{
Databases.SelectedValue = MyMeta.DefaultDatabase.Alias;
bindTables( Databases.SelectedValue );
}
}
}
catch
{
}
}
public void setupTablesDropdown(GuiComboBox Databases,GuiComboBox Tables)
{
try
{
if( MyMeta.IsConnected )
{
//判断数据表列表是否为空
if((Databases.SelectedValue != null)&&(Tables.SelectedValue != null))
{
bindColumns(Databases.SelectedValue,Tables.SelectedValue);
}
}
}
catch
{
}
}

//数据库切换事件
public void cmbDatabase_onchange( GuiComboBox control )
{
GuiComboBox cmbDatabases = ui["cmbDatabase"] as GuiComboBox;
bindTables( cmbDatabases.SelectedText );
}
//数据表切换事件
public void cmbTable_onchange( GuiComboBox control )
{
GuiComboBox cmbDatabases = ui["cmbDatabase"] as GuiComboBox;
GuiComboBox cmbTable = ui["cmbTable"] as GuiComboBox;
bindColumns(cmbDatabases.SelectedText, cmbTable.SelectedText);
}

public void bindTables( string sDatabase )
{
try
{
IDatabase db = MyMeta.Databases[sDatabase];
GuiComboBox cmbTable = ui["cmbTable"] as GuiComboBox;
cmbTable.BindData( db.Tables );
}
catch
{
}
}

public void bindColumns( string sDatabase,string sTable )
{
try
{
IDatabase db = MyMeta.Databases[sDatabase];
ITable objTable=db.Tables[sTable];
GuiComboBox cmbColumn = ui["cmbColumn"] as GuiComboBox;
cmbColumn.BindData( objTable.Columns );
}
catch
{
}
}
}
三、复制下面代码到Template Code选项卡的窗体中
<%
public class GeneratedTemplate : DotNetScriptTemplate
{
public GeneratedTemplate(ZeusContext context) : base(context) {}

//---------------------------------------------------
// Render() is where you want to write your logic
//---------------------------------------------------
public override void Render()
{
if(context.Objects.ContainsKey("DnpUtils"))
{
DnpUtils.SaveInputToCache(context);
}
string strFilenameBase = input["txtPath"].ToString();
string strNamespace = input["txtNamespace"].ToString();
string strDatabaseName = input["cmbDatabase"].ToString();
string strTableName = input["cmbTable"].ToString();
string strColumnName = input["cmbColumn"].ToString();

output.writeln("输出文件路径:"+strFilenameBase);
output.writeln("命名空间名称:"+strNamespace);
output.writeln("当前数据库名称:"+strDatabaseName);
output.writeln("当前数据表名称:"+strTableName);
output.writeln("当前选择列名称:"+strColumnName);
GetAllDataBaseName();
}
//输出所有的数据库名称
private void GetAllDataBaseName()
{
foreach( IDatabase d in MyMeta.Databases )
{
GetAllTablesName(d.Alias);
}
}
//输出所有的数据表名称
private void GetAllTablesName(string sDatabase)
{
IDatabase objDatabase = MyMeta.Databases[sDatabase];
output.writeln("当前数据库:"+sDatabase+"共有数据表总数:"+objDatabase.Tables.Count);
foreach( ITable t in objDatabase.Tables )
{
GetAllColumnsName(sDatabase,t.Alias);
}
}
private void GetAllColumnsName(string sDatabase,string sTable)
{
IDatabase objDatabase = MyMeta.Databases[sDatabase];
ITable objTable=objDatabase.Tables[sTable];
output.writeln("当前数据表:"+sTable+"共有数据列总数:"+objTable.Columns.Count);
foreach( IColumn c in objTable.Columns )
{
if( c.IsInPrimaryKey )
{
output.writeln("主键名称:"+c.Alias);
}
else
{
output.writeln("普通列名:"+c.Alias);
}
}
}

}
%>
四、点菜单上的运行箭头按钮,在Output选项卡的窗体中显示所有结果

分享到:
评论

相关推荐

    mydata源代码 mygeneration中使用的数据库架构dll

    mydata源代码 mygeneration中使用的数据库架构dll,支持多种数据库

    mygeneration外加数据库代码生成器

    mygeneration外加数据库代码生成器

    mygeneration代码生成工具

    从数据库类型到MyGeneration的数据提供者类型到代码类型。 12.支持用户自定义原数据。 13.支持表、字段名、参数等重命名。 14.可以使用Gentle.NET, Opf3, NHibernate的模板。 15.支持在线帮助、模板升级和论坛。 二...

    MyGeneration代码生成器

    例如:数据库名,数据库里面的表,表里面的主键等等。 Zeus为MyGeneration提供了一个的框架,里面最常用的就是一组对WinFrom组件封装后的一套组件,通过这套组件我们可以动态的生成我们需要的界面(我们可以在这个...

    MyGeneration

    Mygeneration V4.1Mygeneration V4.1Mygeneration V4.1Mygeneration V4.1Mygeneration V4.1Mygeneration V4.1Mygeneration V4.1Mygeneration V4.1Mygeneration V4.1Mygeneration V4.1Mygeneration V4.1Mygeneration ...

    mygeneration

    mygeneration代码自动生成工具,(程序员必备工具)。

    著名的代码生成器mygeneration,下载

    著名的代码生成器mygeneration,下载

    mygeneration for .net2.0

    mygeneration for .net2.0

    MyGeneration 最新源码

    通过编写包含各种类型脚本(C#,VB.Net,JScript,VBScript)的模板,通过数据库的表内容,生成你需要的各种代码。你可以用它来生成ORM的实体类,存储过程,SQL语句等等。我甚至用它来生成Asp.Net的页面(呵呵,我很懒...

    mygeneration20110102最新版

    mygeneration20110102最新版

    mygeneration源码

    mygeneration-code,代码生成器,C#,源码,自动生成代码,自动生成实体层,业务逻辑层,数据库访问层等代码。

    MyGeneration不错的ORM和代码生成工具

    通过编写包含各种类型脚本(C#,VB.Net,JScript,VBScript)的模板,通过数据库的表内容,生成你需要的各种代码。你可以用它来生成ORM的实体类,存储过程,SQL语句等等。我甚至用它来生成Asp.Net的页面.

    MyGeneration 1.3.0.3

    MyGeneration 1.3.0.3 安装文件 ASP.NETAddEditRecord.zeus 一个自动生成asp.net页面的模板template. NHibernate.Mapping-1.1.csgen Nhiernate 一个Nhiernate 生成器模板以及 NHibernate-2.1.2.GA-bin 以及 ...

Global site tag (gtag.js) - Google Analytics