using System; using System.Collections.Generic; using System.IO; using System.Windows.Forms; using System.Xml; using DevComponents.DotNetBar; using GeoScene.Engine; using GeoScene.Globe; namespace Cyberpipe { public partial class FrmDatabaseParaSetting :Office2007Form { public static string dbIp = ""; public static string database = ""; public static string user = ""; public static string pass = ""; private GSOGlobeControl ctl; string filenameDbconfig = Application.StartupPath + "\\databaseConfig.xml"; public static GSODataSource ds; List<databaseClass> listDb = new List<databaseClass>(); public FrmDatabaseParaSetting(GSOGlobeControl _ctl) { ctl = _ctl; InitializeComponent(); } /// <summary> /// 窗体初始化事件处理 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void FrmDatabaseParaSetting_Load(object sender, EventArgs e) { #region 读取 database "databaseConfig.xml" if (File.Exists(filenameDbconfig)) { try { XmlDocument doc = new XmlDocument(); doc.Load(filenameDbconfig); XmlNode xn = doc.SelectSingleNode("Database"); // 得到根节点的所有子节点 XmlNodeList xnl = xn.ChildNodes; foreach (XmlNode xn1 in xnl) { databaseClass model = new databaseClass(); XmlElement xe = (XmlElement)xn1;// 将节点转换为元素,便于得到节点的属性值 model.title = xe.GetAttribute("title"); // 得到database节点的所有子节点 XmlNodeList xnl0 = xe.ChildNodes; model.dbip = xnl0.Item(0).InnerText; model.database = xnl0.Item(1).InnerText; model.dbuser = xnl0.Item(2).InnerText; model.dbpassword = xnl0.Item(3).InnerText; listDb.Add(model); } } catch (Exception ex) { LogError.PublishError(ex); } } else { MessageBox.Show("配置文件" + filenameDbconfig + "不存在!", "提示"); } #endregion List<databaseClass> dblist = listDb; for (int i = 0; i < dblist.Count; i++) { dbCombo.Items.Add(dblist[i].title); } } /// <summary> /// 确定按钮事件处理 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void button1_Click(object sender, EventArgs e) { if (dbCombo.Text != null) { List<databaseClass> dblist = listDb; //找到链接数据库 databaseClass db = null; for (int i = 0; i < dblist.Count; i++) { databaseClass model = dblist[i]; if (model.title == dbCombo.Text.Trim()) { db = new databaseClass(); db = model; break; } } //登陆 if (db != null) { dbIp = db.dbip; database = db.database; user = db.dbuser; pass = db.dbpassword; } else { MessageBox.Show("填写的数据库名称无效,请重新选择"); return; } //ds = ctl.Globe.DataManager.OpenOracleDataSource(dbIp + "/" + database, "", "", user, pass); ds = ctl.Globe.DataManager.GetDataSourceByName(dbIp + "/" + database + "_" + user); if (ds == null) { ds = ctl.Globe.DataManager.OpenOracleDataSource(dbIp + "/" + database, "", "", user, pass); } if (ds == null) { ds = ctl.Globe.DataManager.CreateOracleDataSource(dbIp + "/" + database, "", "", user, pass); } if (ds == null) { MessageBox.Show("数据库连接失败!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } MessageBox.Show("数据库连接成功!", "提示"); } else { MessageBox.Show("请选择要进行对比的数据库!", "提示"); return; } DialogResult = DialogResult.OK; Close(); } /// <summary> /// 取消按钮事件处理 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void buttonNo_Click(object sender, EventArgs e) { Close(); } } }