using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using CpmBigDataImportService;
using System.Xml;
using System.Text.RegularExpressions;
namespace UpdateDbConfig
{
class Program
{
static void Main(string[] args)
{
DbConfig dc = null;
switch (args.Length)
{
case 4:
dc = new DbConfig(args[0], args[1], args[2], args[3]);
break;
case 0:
dc = new DbConfig(@".\sqlexpress", "zhyh", "xx", "xxxx");
break;
default:
break;
}
}
}
public class DbConfig
{
public string FileName { set; get; }
private XmlDocument doc;
public string[] dbs;
public DbConfig(string fileName)
{
this.FileName = fileName;
doc = new XmlDocument();
doc.Load(fileName);
}
public DbConfig(string server, string database, string usr = "xx", string pwd = "xxx")
{
if (string.IsNullOrEmpty(FileName))
FileName = AppDomain.CurrentDomain.BaseDirectory + ".\\" + "ImportConfig.xml";
doc = new XmlDocument();
doc.Load(FileName);
SetServerInfo(doc, "/configs", server, database, usr, pwd);
SetServerInfo(doc, "//sqlConnectInfo", server, database, usr, pwd);
doc.Save(FileName);
}
private void SetServerInfo(XmlDocument doc, string path, string server, string database, string usr = "xx", string pwd = "xxx")
{
XmlNodeList list = doc.SelectNodes(path);
foreach (XmlNode item in list)
{
SetServerInfo((XmlElement)item, server, database, usr, pwd);
}
}
private void SetServerInfo(XmlElement ele, string server, string database, string usr = "xx", string pwd = "xxx")
{
ele.RemoveAttribute("server");
ele.RemoveAttribute("database");
ele.RemoveAttribute("sa");
ele.RemoveAttribute("pwd");
ele.SetAttribute("server", server);
ele.SetAttribute("database", database);
ele.SetAttribute("usr", usr);
ele.SetAttribute("pwd", pwd);
}
public static string GetVarName(System.Linq.Expressions.Expression<Func<string, string>> exp)
{
return ((System.Linq.Expressions.MemberExpression)exp.Body).Member.Name;
// MyCommon.WriteLog(GetVarName(p => server));
}
public void SetDbAtts(string dbId, string dbSetting)
{
string[] settings = Regex.Split(dbSetting, @"\s*;\s*");
foreach (string setting in settings)
{
string[] ss = Regex.Split(setting, @"\s*=\s*");
}
}
}
}