`
xqf222
  • 浏览: 129028 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

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选项卡的窗体中显示所有结果

分享到:
评论

相关推荐

    mygeneration外加数据库代码生成器

    在【压缩包子文件名称列表】中,"mygeneration_1303.rar"可能是myGeneration的一个版本13.0.3的压缩包,包含了myGeneration软件的所有文件和必要的文档。"数据库代码生成器.zip"可能包含了一些预设的数据库代码生成...

    mygeneration

    2. **数据库元数据获取**:通过连接到数据库,MyGeneration可以获取表、视图、存储过程等元数据,然后根据这些元数据自动生成对应的实体模型、DAO层、数据访问层等代码。 3. **模板库**:MyGeneration内置了大量的...

    MyGeneration

    MyGeneration 支持多种数据库,包括但不限于SQL Server、Oracle、MySQL、PostgreSQL等,使得它能够处理多种数据源的代码生成任务。它允许用户编写自己的模板,这些模板可以是简单的文本文件,也可以是复杂的脚本,...

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

    4. **数据库支持**:MyGeneration支持广泛的数据库系统,包括SQL Server、Oracle、MySQL、PostgreSQL等,甚至对ODBC和OLE DB提供支持,确保了跨平台的兼容性。 5. **可视化设计**:MyGeneration提供了MyGeneration ...

    mygeneration for .net2.0

    3. **元数据支持**:mygeneration 可以通过各种方式(如数据库、XML文件、Web服务等)获取元数据,并基于这些元数据生成代码。这对于数据库驱动的应用程序特别有用,因为它可以自动创建数据访问层和对象模型。 4. *...

    myGeneration安装文件

    映射文件可以描述数据库表与应用程序对象之间的对应关系,myGeneration会根据这些映射生成相应的数据访问代码,使得开发者可以方便地操作数据库中的数据。 “说明文档”的生成是myGeneration的另一大亮点。它可以...

    mygeneration代码生成工具

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

    mygeneration_1309

    2. **多种数据库支持**:mygeneration能够与多种数据库系统进行交互,包括但不限于MySQL、Oracle、SQL Server、PostgreSQL等,具备良好的数据库适配性。 3. **动态SQL生成**:mygeneration能够自动生成SQL查询语句...

    MyGeneration(ORM和代码生成工具)_20110102.rar

    MyGeneration是一款强大的ORM(对象关系映射)工具和代码生成器,主要帮助开发者自动生成数据库相关的源代码,如数据访问层、实体类等,从而提高开发效率和代码质量。20110102版是该软件的一个特定版本,可能包含了...

    MyGeneration学习笔记

    2. **元数据**:元数据是从数据库中提取的信息,如表结构、字段类型等。MyGeneration能够连接到数据库并读取这些元数据,然后用它们填充模板,生成具体的代码。 3. **变量和命令**:MyGenScript提供了丰富的变量和...

    代码生成工具mygeneration

    在描述中提到的"DB数据模式代码"是指MyGeneration可以根据数据库表结构自动生成数据访问层、业务逻辑层以及表示层的代码。例如,它能生成用于CRUD(创建、读取、更新、删除)操作的方法,创建数据访问对象(DAO)、...

    Mygeneration_1309_20081006—IBatis_SQL映射+实体模板

    每个实体类通常对应数据库中的一个表,类中的属性与表的列相对应。Mygeneration可以自动根据数据库表的结构生成实体类,减少了手动编码的工作量。 4. **SQL Mapping映射文件**:在IBatis.NET中,SQL Mapping文件是...

    MyGeneration学习笔记.doc

    MyGeneration 支持多种数据库,包括 SQL Server、Access、Oracle、PostgreSQL、Firebird 和 VistaDB。每个数据库都有对应的 DynamicQuery.cs 和 Entity.cs 文件,用于生成相应的数据访问代码。例如,如果你使用 SQL ...

    mygeneration c#

    mygeneration是一款开源的模板驱动代码生成器,支持多种数据库系统,包括但不限于SQL Server、MySQL、Oracle等。它的主要优点在于通过灵活的模板语言,用户可以自定义生成各种类型的代码,如实体类、数据访问层(DAL...

Global site tag (gtag.js) - Google Analytics