Newer
Older
GHFX_REFACTOR / FrmDatabaseParaSetting.cs
wxn on 9 Nov 2016 4 KB 冗余代码整理
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);
                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();
        }      
    }
}