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

  • 相关阅读:
    Redis学习第二天
    Redis学习
    jQuery基础
    Hashtable 和 HashMap 的区别
    JSP页面乱码问题
    Day28 java8:Stream API
    转 链表中节点每k个一组反转
    day 27 lambda表达式(针对接口) & 函数式接口
    day20异常2
    day20 异常1
  • 原文地址:https://www.cnblogs.com/xqf222/p/3306790.html
Copyright © 2020-2023  润新知