private void btnUpdateConfig_Click(object sender, EventArgs e)
        {
            try
            {
                //0、取值判断
                string alisName = txtAlisName.Text.Trim().ToUpper();
                string ip       = txtIP.Text.Trim();
                string port     = txtPort.Text.Trim();
                string sid      = txtSID.Text.Trim();

                if (string.IsNullOrEmpty(alisName) || string.IsNullOrEmpty(ip) || string.IsNullOrEmpty(port) ||
                    string.IsNullOrEmpty(sid))
                {
                    MessageBox.Show("有必填项未填写");
                    return;
                }

                //1、备份tns
                string bak;
                string err;
                bool   suc = _oraInfo.BackupTnsname(out bak, out err);
                if (suc == false)
                {
                    MessageBox.Show(err);
                    return;
                }

                //2、获取oracle版本
                string version;
                suc = _oraInfo.GetOracleVersion(out version, out err);
                if (suc == false)
                {
                    MessageBox.Show(err);
                    return;
                }

                //4、读取tnsname,分析其中的配置
                string tnsFile;
                suc = _oraInfo.GetOracleTNSName(out tnsFile, out err);
                if (suc == false)
                {
                    MessageBox.Show(err);
                    return;
                }
                string tnsContent       = File.ReadAllText(tnsFile, Encoding.Default);
                var    tnsNameConfigDic = _oraInfo.PickupTNSConfig(tnsContent);


                //3、根据oracle版本生成配置串
                string defaultDomain = Sqlnetora.GetDefaultDomain(tnsFile);//根据sqlnet获取默认域
                if (!string.IsNullOrEmpty(defaultDomain))
                {
                    alisName = alisName + "." + defaultDomain;

                    AddMessage("默认域:" + defaultDomain);
                }

                TNSConfig tc = new TNSConfig(version, ip, port, "TCP", sid, alisName);
                if (rdbSERVICE_NAME.Checked)
                {
                    tc.ConnectData = eConnectData.SERVICE_NAME;
                }
                else if (rdbSID.Checked)
                {
                    tc.ConnectData = eConnectData.SID;
                }

                string config = tc.ToTNSString(chkDedicated.Checked);

                string afterConfig = tnsContent;
                //5、如果有该配置节,则替换;如果不存在则增加配置节
                if (tnsNameConfigDic != null && tnsNameConfigDic.ContainsKey(alisName))
                {
                    string value = tnsNameConfigDic[alisName];
                    if (value.StartsWith("\n") && tnsContent.IndexOf("\r" + value) >= 0)
                    {
                        afterConfig = tnsContent.Replace("\r" + value, config);
                    }
                    else
                    {
                        afterConfig = tnsContent.Replace(value, config);
                    }
                }
                else
                {
                    afterConfig = tnsContent + "\r\n" + config;
                }

                //7、将修改结果保存
                File.WriteAllText(tnsFile, afterConfig, Encoding.Default);

                AddMessage("更新配置成功");

                btnTestConnect_Click(sender, e);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
Пример #2
0
        private void btnUpdateConfig_Click(object sender, EventArgs e)
        {
            try
            {
                //0、取值判断
                string alisName = txtAlisName.Text.Trim().ToUpper();
                string ip = txtIP.Text.Trim();
                string port = txtPort.Text.Trim();
                string sid = txtSID.Text.Trim();

                if (string.IsNullOrEmpty(alisName) || string.IsNullOrEmpty(ip) || string.IsNullOrEmpty(port)
                    || string.IsNullOrEmpty(sid))
                {
                    MessageBox.Show("有必填项未填写");
                    return;
                }

                //1、备份tns
                string bak;
                string err;
                bool suc = _oraInfo.BackupTnsname(out bak, out err);
                if (suc == false)
                {
                    MessageBox.Show(err);
                    return;
                }

                //2、获取oracle版本
                string version;
                suc = _oraInfo.GetOracleVersion(out version, out err);
                if (suc == false)
                {
                    MessageBox.Show(err);
                    return;
                }

                //4、读取tnsname,分析其中的配置
                string tnsFile;
                suc = _oraInfo.GetOracleTNSName(out tnsFile, out err);
                if (suc == false)
                {
                    MessageBox.Show(err);
                    return;
                }
                string tnsContent = File.ReadAllText(tnsFile, Encoding.Default);
                var tnsNameConfigDic = _oraInfo.PickupTNSConfig(tnsContent);

                //3、根据oracle版本生成配置串
                string defaultDomain = Sqlnetora.GetDefaultDomain(tnsFile);//根据sqlnet获取默认域
                if (!string.IsNullOrEmpty(defaultDomain))
                {
                    alisName = alisName + "." + defaultDomain;

                    AddMessage("默认域:" + defaultDomain);
                }

                TNSConfig tc = new TNSConfig(version, ip, port, "TCP", sid, alisName);
                if (rdbSERVICE_NAME.Checked) tc.ConnectData = eConnectData.SERVICE_NAME;
                else if (rdbSID.Checked) tc.ConnectData = eConnectData.SID;

                string config = tc.ToTNSString(chkDedicated.Checked);

                string afterConfig = tnsContent;
                //5、如果有该配置节,则替换;如果不存在则增加配置节
                if (tnsNameConfigDic != null && tnsNameConfigDic.ContainsKey(alisName))
                {
                    string value = tnsNameConfigDic[alisName];
                    if (value.StartsWith("\n") && tnsContent.IndexOf("\r" + value) >= 0)
                    {
                        afterConfig = tnsContent.Replace("\r" + value, config);
                    }
                    else
                    {
                        afterConfig = tnsContent.Replace(value, config);
                    }
                }
                else
                {
                    afterConfig = tnsContent + "\r\n" + config;
                }

                //7、将修改结果保存
                File.WriteAllText(tnsFile, afterConfig, Encoding.Default);

                AddMessage("更新配置成功");

                btnTestConnect_Click(sender, e);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }