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