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); } }
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); } }