/****************************** * 说明:数据库连接参数配置类 * 创建人:龚宇超 * 创建日期:2017-07-24 * 修改人: * 修改日期: * 修改备注: * 版本:1.0.0.0 ******************************/ using System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.Win32; using System.Data.SqlClient; using System.Data; using Lskj.Util; using System.Net; using System.Net.Sockets; using System.Threading; using System.Diagnostics; using System.IO; using System.Data.Common; namespace Lskj.Core { /// /// 数据库连接参数配置类 /// public sealed class DBConfig { private static string _regKey = "AA_LS_Erp V2.0"; private static DBConfig _instance = null; /// /// DBConfig静态单例对象 /// /// The instance. public static DBConfig Instance { get { if (_instance == null) { _instance = new DBConfig(); _instance.ReadConfig(); _instance.WriteConfig(false); } return _instance; } } public static DBConfig MesInstance { get { if (_instance == null) { _instance = new DBConfig(); _instance.ReadConfig(false, true); _instance.WriteConfig(false); } return _instance; } } /// /// 数据库名 /// public string DataBase; /// /// 帐套 /// public string DataBook; /// /// 服务器名(登录服务器) /// public string ServerName; /// /// 登录名 /// public string LoginName; /// /// 通知员工ID /// public string NoticeUserID; /// /// 通知员工姓名 /// public string NoticeUserName; /// /// 系统筛选id /// public string ProGramme; /// /// 文件升级标志 /// public bool UpdateSet; /// ///智能客户端启动 /// public bool SmallClient; /// ///智能客户端启动 /// public bool NoticeClient; /// /// The notice show window /// public bool NoticeShowWindow; /// /// The notice flicker /// public bool NoticeFlicker; /// /// The notice exit /// public bool NoticeExit; /// /// 内外外网标志 /// public bool Internet; /// /// 是否注册过高拍仪 /// public bool IsCmpCapture; /// ///是否记住密码 /// public bool IsRemPwd; /// ///选中内网 /// public bool IsInternalNetwork; /// ///选中数据库类型 /// public string ServerType = "SqlServer"; /// ///内网地址 /// public string InternalNetworkAddress; /// ///外网地址 /// public string ExternalNetworkAddress; /// /// 班次 /// public string BCName; public bool IsConsumer; public string Connection; public string dephiConnection; public string Connection1 = "QkYyNjE3QTcxQjc4RDFFMDlERjlFMDc1QkIyMDVGRjdDRUIyMEVEOUM5NjBCQjc5NTA5NzdEQTk0MkNEQTE1RTFGMEIwMThFNUJDQTE0RjE1NjQwM0U5QTYxMThCMDY2MTA4NkE2OTIxNTNBQjQ0MjRDMDIwM0Q5OEVDQjkwQTVCN0RENjJBODkxNUNGOUM5OEI5RTEzN0E3ODBERjg2OURCNEQ5QTlCMzhCQUZGQ0FBNUREMjY4M0FCODg2RTkxMDRERTQ3MjRGQTE1MERDOTJGRDFDRjY2REQ1ODYyREUzN0RGM0ZBQzc4NzJENjIwNDg4RUUyNkI3ODE1RjlDM0I0MjNCQzcyOENDN0VDMTg0QUU0MjgwMDVDMENBOUZF"; public string Connection1DM = "Nzg5REZBQ0IzMjYzQkQzRTZFRTExNjY5MThCNjUwQTUxNDFBRUY4QzREQkJCMEU4NjQyNUI3QzYzMzA0ODMwRjAzODdEODlCMjRFM0JBQTg0RjAxMDQ1QTc3MEM5MTM1RTlBQkUzNUQyRTgwNzlGMTYwQzU5MjI4QkMyNUQ1MEU="; public string Connection2 = "Njk5NTI5NDE5RUI2ODM4MEQ5MEJFQkU3NzM3REQxQThDREM4NzRFNUY3QzYzMkVEOEEzODRBMzJBRjIwRUY4Njg4Qjg3M0Q1MTY3MjAxRkY2OTNGMzk3MUZBRjMxMzdDQ0U4RjMxQUVERjdBQzI5MEExNjQ3ODlDNkEwODVBMUJDMUJGN0U2RUJENkMwQzhERTFCNzgyMjg1MjBFQkE2MkU4NjMyQjBEMDY0QjQ0MzVDQ0QxMjMzQTA3NjI3QjQyOTczQUJBMUI0OUNGMkE5REYzOTI2NDFBRTY3QzFGQTJCRDFDNUIzQ0FCMzA4QzEwMjc2MTI5QjU2MzgxMjBDN0MwNUFGNUU3QTdBRTI2REQzREEyM0FFM0I2MUVGMzYw"; public string Connection3 = "NjQ0OTQzRTY1MkUwQUUxQTdCQTlBRjkwRjI4QkU1MTRDNTc5RDI0RTg5Q0Q5RjU2QjQ3RjY4REY2NEY1QjM5QUNCREIzMTBDRUMxREQ5NzlBREUxMjQ5NzdCM0Y0RUM1Qjc2MEI3MzFFNTcxQ0Q5MzA5RTI5RUFGNDQxOTMyRkQ1RTdDNjcyRTFCQjUyM0Y4RkE2NEE2N0QyNzEyQzVCRTcyOUJBRTYxMjMzRjYwMjg5NzIyRjJGOTdDMzE0NTQ0MjIwQzFBNEI4MDI0OUNFNTJDMzlEOEMwNjY1MjA3M0YyQkQ0NDRDOTg5REMxMUVCMDM1MUU0OTEzQzQwRDBDQ0E3Rjk4QjgyNzRFRjYzQzBEMDcxQzVFMjdCMTIxNkE2MzI0MEIyNDkwOERGNUFDMjRGMEYxRkFFNzJEQTIwM0EyRjU0N0U4OEFENDBEMjEzNUY1OTI5NUUxRDM1N0I0Rg=="; public string Connection4 = "NjU3MDQ0Q0JDREI0Mjc2OUY4RTBCOEIxMjBDOEM4MEQ2QUMwMjNEOUVDOTQ4NEMwRDE2RDdEMTQwNEQwODg3MURBMzRENkIxNEFENEYwQTcyMkEwMTE0NDhDM0NGNUZBQ0U4RjMxQUVERjdBQzI5MEExNjQ3ODlDNkEwODVBMUI3NDlCRkU1RDBGQUI0RUJFODlFNkE5MzlFNkIzODAyODEyRjFGQzE4NjVCMEM2OThDRDgzRUY4M0ZGNEExRkEyRUFGQzE4NTg1QkZBMEMwRTI5NzAzQzkzMzY2RUU0Mzc5RkI4NkVDRTM3NDNBMTk0ODJBQTNDNUY2RDlGMzU3MUEyOUEzOEI5RjA3NzA2NjM1NUNFM0U5RjNCNzMzM0RBMUY2MDkxQUZDQ0YxN0Q5MDgwOEY0NzZEMUM3MjQyMkRBOUY2N0NFRUE3MTkwNzk0OTA2NUYyRDJBMEM4RUU4OQ=="; public string Connection5 = "QkYyNjE3QTcxQjc4RDFFMDlERjlFMDc1QkIyMDVGRjdDRUIyMEVEOUM5NjBCQjc5NTA5NzdEQTk0MkNEQTE1RTFGMEIwMThFNUJDQTE0RjE1NjQwM0U5QTYxMThCMDY2RjA1ODM0OUM0MDQ3RkQ3MkQ0NkEzQUIyRURFRUVGNzVEQjA0OTZDNUEwNUYxMkZBMTNENTdGODFFRjk5RTI0MTA2MjVGRUJDNTFFQTg3NUE1Q0I1MjAxOTI2QjNBNTM1QUQ1OTE4NUFEODU3MjYxNUNFNzk5MEU4RDgxRUM1NDlDRjM3RTZDOTQzRjExQzkwRTUyQzg1RDA0QzMzMzdCNjZBNjNEN0EyNjdBOTE3NEQ0RUE0NjMzMjhBOTYwQTVGOERDN0M3NzgxODA2RDM3MDU1QjBCREQzN0M1Njk4NEQ="; public string Connection6 = "Njk5NTI5NDE5RUI2ODM4MEQ5MEJFQkU3NzM3REQxQThDREM4NzRFNUY3QzYzMkVEOEEzODRBMzJBRjIwRUY4Njg4Qjg3M0Q1MTY3MjAxRkY2OTNGMzk3MUZBRjMxMzdDQ0U4RjMxQUVERjdBQzI5MEExNjQ3ODlDNkEwODVBMUI3NDlCRkU1RDBGQUI0RUJFODlFNkE5MzlFNkIzODAyODEyRjFGQzE4NjVCMEM2OThDRDgzRUY4M0ZGNEExRkEyRUFGQzE4NTg1QkZBMEMwRTI5NzAzQzkzMzY2RUU0Mzc5RkI4NkVDRTM3NDNBMTk0ODJBQTNDNUY2RDlGMzU3MTcwNkFDOUM4Qjg5RUE3RkJDRTgzQjQ4RUJBMzI5RjFE"; /// /// 说明:读取注册表配置 /// 创建人:龚宇超 /// 创建日期:2017-08-07 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// public void ReadConfig(bool isRefConfigFlag = false, bool isMesLogin = false)//isRefConfigFlag是否更改DB { RegistryKey regKey = Registry.CurrentUser; try { RegistryKey erpKey = regKey.CreateSubKey("AA_LS_Erp V2.0"); erpKey.CreateSubKey("File"); } catch (Exception) { } RegistryKey subKey = regKey.OpenSubKey(_regKey); subKey = subKey.OpenSubKey("File", true); DataBase = subKey.GetValue("datastr", "") + ""; ServerName = subKey.GetValue("ServerName", "") + ""; InternalNetworkAddress = subKey.GetValue("InternalNetworkAddress", "") + ""; ExternalNetworkAddress = subKey.GetValue("ExternalNetworkAddress", "") + ""; IsInternalNetwork = (subKey.GetValue("IsInternalNetwork", "") + "").Equals("1"); ServerType = subKey.GetValue("ServerType", "") + ""; LoginName = subKey.GetValue("LoginName", "") + ""; UpdateSet = subKey.GetValue("UpdateSet", "0") + "" == "1" || subKey.GetValue("UpdateSet", "0") + "" == "True" ? true : false; SmallClient = subKey.GetValue("SmallClient", "0") + "" == "1" || subKey.GetValue("SmallClient", "0") + "" == "True" ? true : false; NoticeClient = subKey.GetValue("NoticeClient", "0") + "" == "1" || subKey.GetValue("NoticeClient", "0") + "" == "True" ? true : false; Internet = subKey.GetValue("Internet", "1") + "" == "0" ? true : false; IsConsumer = subKey.GetValue("IsConsumer", "1") + "" == "1" ? true : false; ProGramme = subKey.GetValue("ProGramme", "") + ""; NoticeUserName = subKey.GetValue("NoticeUserName", "") + ""; NoticeUserID = subKey.GetValue("NoticeUserID", "") + ""; NoticeShowWindow = subKey.GetValue("NoticeShowWindow", "0") + "" == "1" || subKey.GetValue("NoticeShowWindow", "0") + "" == "True" ? true : false; NoticeFlicker = subKey.GetValue("NoticeFlicker", "0") + "" == "0" || subKey.GetValue("NoticeFlicker", "0") + "" == "False" ? false : true; NoticeExit = subKey.GetValue("NoticeExit", "0") + "" == "1" || subKey.GetValue("NoticeExit", "0") + "" == "True" ? true : false; IsRemPwd = subKey.GetValue("IsRemPwd", "0") + "" == "1" || subKey.GetValue("IsRemPwd", "0") + "" == "True" ? true : false; if (subKey.GetValue("IsCmpCapture") == null) { subKey.SetValue("IsCmpCapture", 0); } IsCmpCapture = subKey.GetValue("IsCmpCapture", "0") + "" == "1" || subKey.GetValue("IsCmpCapture", "0") + "" == "True" ? true : false; try { DataBook = subKey.GetValue("DataBook", "") + ""; } catch (Exception) { } string file = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "SystemResources.ini"); if (File.Exists(file)) { string lastIPPort = string.Format("{0}:{1}", IniHelper.Read("SystemResources.ini", "LocalLastIP"), IniHelper.Read("SystemResources.ini", "LocalLastPort")); string downloadAESStrKey = string.Format("DownloadAESStr_{0}", lastIPPort); string[] downloadAESStrValue = IniHelper.Read("SystemResources.ini", downloadAESStrKey).Split('^'); string downloadAESStr = downloadAESStrValue.Length == 2 ? downloadAESStrValue[1] : ""; string configFlag = IniHelper.Read("SystemResources.ini", "FrmConfigFlag"); if (configFlag.Equals("1") && !isRefConfigFlag && !isMesLogin) { //string args = AESUtil.Decrypt(File.ReadAllText(file)); if (!string.IsNullOrEmpty(downloadAESStr)) { string args = AESUtil.Decrypt(downloadAESStr); string[] controlAfgs = args.Split('^'); if (controlAfgs != null && controlAfgs.Length == 5) { ServerName = controlAfgs[0]; DataBase = controlAfgs[1]; string str = "Server={0};Database={1};Persist Security Info=True;User ID=" + controlAfgs[2] + ";Password=" + controlAfgs[3] + ";Connection Timeout=5;MultipleActiveResultSets=true"; string dephistr = "Provider=SQLOLEDB.1;Server={0};Database={1};Persist Security Info=True;User ID=" + controlAfgs[2] + ";Password=" + controlAfgs[3] + ";Connection Timeout=5"; Connection = AESUtil.Encrypt(str); dephiConnection = AESUtil.Encrypt(dephistr); } } } } } /// /// 说明:激活高拍仪控件 /// 创建人:龚宇超 /// 创建日期:2018-07-31 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// public void SetActiveOcx(string subkeyName) { RegistryKey regKey = Registry.CurrentUser; RegistryKey subKey = regKey.OpenSubKey(_regKey); subKey = subKey.OpenSubKey("File", true); subKey.SetValue(subkeyName, 1); } /// /// 说明:写配置 /// 创建人:龚宇超 /// 创建日期:2017-08-07 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// public void WriteConfig(bool isWriteSaDFlag) { RegistryKey regKey = Registry.CurrentUser; RegistryKey subKey = regKey.OpenSubKey(_regKey); subKey = subKey.OpenSubKey("File", true); if (isWriteSaDFlag) { subKey.SetValue("datastr", DataBase); subKey.SetValue("ServerName", ServerName); subKey.SetValue("InternalNetworkAddress", InternalNetworkAddress); subKey.SetValue("ExternalNetworkAddress", ExternalNetworkAddress); subKey.SetValue("IsInternalNetwork", IsInternalNetwork ? "1" : "0"); } subKey.SetValue("LoginName", LoginName); subKey.SetValue("UpdateSet", UpdateSet); subKey.SetValue("SmallClient", SmallClient); subKey.SetValue("NoticeClient", NoticeClient); subKey.SetValue("DataBook", DataBook); subKey.SetValue("NoticeUserID", NoticeUserID); subKey.SetValue("ProGramme", ProGramme); subKey.SetValue("NoticeUserName", NoticeUserName); subKey.SetValue("NoticeShowWindow", NoticeShowWindow); subKey.SetValue("NoticeFlicker", NoticeFlicker); subKey.SetValue("NoticeExit", NoticeExit); subKey.SetValue("IsRemPwd", IsRemPwd); subKey.Close(); } public void WriteConfig() { RegistryKey regKey = Registry.CurrentUser; RegistryKey subKey = regKey.OpenSubKey(_regKey); subKey = subKey.OpenSubKey("File", true); subKey.SetValue("datastr", DataBase); subKey.SetValue("ServerName", ServerName); subKey.SetValue("InternalNetworkAddress", InternalNetworkAddress); subKey.SetValue("ExternalNetworkAddress", ExternalNetworkAddress); subKey.SetValue("IsInternalNetwork", IsInternalNetwork ? "1" : "0"); subKey.SetValue("ServerType", ServerType); subKey.SetValue("LoginName", LoginName); subKey.SetValue("UpdateSet", UpdateSet); subKey.SetValue("SmallClient", SmallClient); subKey.SetValue("NoticeClient", NoticeClient); subKey.SetValue("DataBook", DataBook); subKey.SetValue("NoticeUserID", NoticeUserID); subKey.SetValue("ProGramme", ProGramme); subKey.SetValue("NoticeUserName", NoticeUserName); subKey.SetValue("NoticeShowWindow", NoticeShowWindow); subKey.SetValue("NoticeFlicker", NoticeFlicker); subKey.SetValue("NoticeExit", NoticeExit); subKey.SetValue("IsRemPwd", IsRemPwd); subKey.Close(); } public void WriteConfig(string Key, string Value) { RegistryKey regKey = Registry.CurrentUser; RegistryKey subKey = regKey.OpenSubKey(_regKey); subKey = subKey.OpenSubKey("File", true); subKey.SetValue(Key, Value); subKey.Close(); } /// /// 说明:获取C#连接字符串 /// 创建人:龚宇超 /// 创建日期:2017-08-07 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// System.String. public string GetConnection(string Connection = "") { if (!string.IsNullOrEmpty(Connection)) { return string.Format(AESUtil.Decrypt(Connection), ServerName, DataBase); } return IsConsumer ? (DBConfig.Instance.ServerType + "").Equals("达梦数据库") ? string.Format(AESUtil.Decrypt(Connection1DM), ServerName, DataBase, Environment.MachineName) : string.Format(AESUtil.Decrypt(Connection1), ServerName, DataBase) : string.Format(AESUtil.Decrypt(Connection5), ServerName, DataBase); } /// /// 说明:获取delphi连接字符串 /// 创建人:龚宇超 /// 创建日期:2017-08-07 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// System.String. public string GetDelphiConnection(string Connection = "") { if (!string.IsNullOrEmpty(Connection)) { return string.Format(AESUtil.Decrypt(Connection), ServerName, DataBase); } return IsConsumer ? string.Format(AESUtil.Decrypt(Connection2), ServerName, DataBase) : string.Format(AESUtil.Decrypt(Connection6), ServerName, DataBase); } /// /// 说明:获取 /// 创建人:龚宇超 /// 创建日期:2018-03-28 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// System.String. public string GetLsCrmConnection() { return Internet ? AESUtil.Decrypt(Connection3) : AESUtil.Decrypt(Connection4); } /// /// 说明:创建数据库连接 /// 创建人:龚宇超 /// 创建日期:2017-08-07 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// true if XXXX, false otherwise. public bool CreateConnection(string Connection = "", ConnectionType connectionType = ConnectionType.SqlServer) { bool isConnect = false; try { string connStr = GetConnection(Connection); string providerName = "System.Data.SqlClient"; SqlHelper.ConnectionType = ConnectionType.SqlServer; //connectionType = ConnectionType.KdbnServer; //connStr = "host=192.168.0.55;port=54321;database=test3;username=lserpAdmin;password=lserp110;"; //connectionType = ConnectionType.DmServer; //string hostname = Environment.MachineName; //connStr = $"Server=110.185.161.104:5236; schema=LSERP_JTCS; UserId=LSERPADMIN; PWD=Lserp110 ;host={hostname}"; if (DBConfig.Instance.ServerType.Equals("达梦数据库")) { connectionType = ConnectionType.DmServer; //connStr = $"Server=110.185.161.104:5236; schema=LSERP_JTCS; UserId=LSERPADMIN; PWD=Lserp110 ;host={hostname}"; } if (connectionType == ConnectionType.KdbnServer) { providerName = "Kdbndp"; SqlHelper.ConnectionType = ConnectionType.KdbnServer; } else if (connectionType == ConnectionType.DmServer) { providerName = "Dm"; SqlHelper.ConnectionType = ConnectionType.DmServer; } SqlHelper.dbFactory = DbProviderFactories.GetFactory(providerName);