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

    技术2024-12-18  8

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

    最新回复(0)