150 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			C#
		
	
	
	
		
		
			
		
	
	
			150 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			C#
		
	
	
	
|  | using System; | |||
|  | using System.Collections.Generic; | |||
|  | using System.Linq; | |||
|  | using System.Text; | |||
|  | using System.Configuration; | |||
|  | using System.Windows.Forms; | |||
|  | using System.Data.SqlClient; | |||
|  | using System.Data; | |||
|  | using System.Security.Cryptography;   | |||
|  | 
 | |||
|  | namespace DeiNiu.Utils | |||
|  | { | |||
|  |     /// <summary>   | |||
|  |     /// SQL数据库服务器配置静态类   | |||
|  |     /// </summary>   | |||
|  |     public class ConntionConfig | |||
|  |     { | |||
|  |        public static string connString = "SqlconnectionString"; | |||
|  |         /// <summary>   | |||
|  |         /// 检查配置信息   | |||
|  |         /// </summary>   | |||
|  |         /// <returns>完整有效返回true,无效则启动配置界面</returns>   | |||
|  |         public static bool CheckConntionConfig(string conn=null) | |||
|  |         { | |||
|  |             if (CheckedConnection(conn)) | |||
|  |             { | |||
|  |                 return true; | |||
|  |             } | |||
|  |             else | |||
|  |             { | |||
|  |                 return false;// CheckedConfig(); | |||
|  |             } | |||
|  |         } | |||
|  |         /* | |||
|  |         /// <summary>   | |||
|  |         /// 验证配置信息   | |||
|  |         /// </summary>   | |||
|  |         private static bool CheckedConfig() | |||
|  |         { | |||
|  |             MessageBox.Show("数据库服务器无法连接,请重新配置。", | |||
|  |                    "系统提示", | |||
|  |                    MessageBoxButtons.OK, | |||
|  |                    MessageBoxIcon.Warning); | |||
|  | 
 | |||
|  |             SvrConf svrConf = new SvrConf(); | |||
|  |             svrConf.ShowDialog(); | |||
|  | 
 | |||
|  |             if (MessageBox.Show("是否现在进入系统?", "询问", | |||
|  |                 MessageBoxButtons.YesNo, | |||
|  |                 MessageBoxIcon.Question) == DialogResult.Yes) | |||
|  |             { | |||
|  |                 return CheckConntionConfig(); | |||
|  |             } | |||
|  |             else | |||
|  |             { | |||
|  |                 return false; | |||
|  |             } | |||
|  |         } | |||
|  |         */ | |||
|  |         /// <summary>   | |||
|  |         /// 验证配置信息的数据库连接   | |||
|  |         /// </summary>   | |||
|  |         private static bool CheckedConnection(string conn=null) | |||
|  |         { | |||
|  |             string connectionString = string.IsNullOrEmpty(conn) ? ConString() : conn; | |||
|  |             return !string.IsNullOrEmpty(connectionString) && | |||
|  |                    TestConntion(connectionString); | |||
|  |         } | |||
|  | 
 | |||
|  |         /// <summary>   | |||
|  |         /// 测试与服务器数据库是否成功连接   | |||
|  |         /// </summary>   | |||
|  |         /// <param name="connectionString">数据库连接字符串</param>   | |||
|  |         /// <returns></returns>   | |||
|  |         public static bool TestConntion(string connectionString) | |||
|  |         { | |||
|  |         | |||
|  |             using (SqlConnection conn = new SqlConnection(connectionString)) | |||
|  |             { | |||
|  |                 try | |||
|  |                 { | |||
|  |                     if (conn.State == ConnectionState.Open) | |||
|  |                         conn.Close(); | |||
|  |                     conn.Open(); | |||
|  |                     WmsConstants.SQL_CONN_WMS = connectionString;//set con in memory | |||
|  |                     return true; | |||
|  |                 } | |||
|  |                 catch | |||
|  |                 { | |||
|  |                     return false; | |||
|  |                 } | |||
|  |                 finally | |||
|  |                 { | |||
|  |                     conn.Close(); | |||
|  |                     conn.Dispose(); | |||
|  |                 } | |||
|  |             } | |||
|  |         } | |||
|  | 
 | |||
|  |         /// <summary>   | |||
|  |         /// 数据库连接字符串,自动判断加密状态并获取对应连接字符串。   | |||
|  |         /// </summary>   | |||
|  |         /// <returns></returns>   | |||
|  |         public static string ConString() | |||
|  |         { | |||
|  |              | |||
|  |             if (IsEncrypt()) | |||
|  |             { | |||
|  |                 string cstr = ConfigurationManager.AppSettings[connString]; | |||
|  |                 try | |||
|  |                 { | |||
|  |                     //解密后的数据库连接字符串   | |||
|  |                     cstr = DESEncrypt.Decrypt(cstr); | |||
|  |                     return cstr; | |||
|  |                 } | |||
|  |                 catch | |||
|  |                 { | |||
|  |                     //如果勾选加密,第一次登陆时取到的是未加密连接字符串,所以直接返回。如果返回空字符串会导致首次登陆失败。   | |||
|  |                     //ConfigurationManager.AppSettings["ConnectionString"] = string.Empty;   | |||
|  |                     //return string.Empty;   | |||
|  |                     return cstr; | |||
|  |                 } | |||
|  |             } | |||
|  |             else | |||
|  |             { | |||
|  |                 //无须解密的数据库连接字符串   | |||
|  |                 return ConfigurationManager.AppSettings[connString]; | |||
|  |             } | |||
|  | 
 | |||
|  |         } | |||
|  | 
 | |||
|  |         /// <summary>   | |||
|  |         /// 验证是否已加密   | |||
|  |         /// </summary>   | |||
|  |         /// <returns></returns>   | |||
|  |         internal static bool IsEncrypt() | |||
|  |         {  | |||
|  |             switch (ConfigurationManager.AppSettings["ConStringEncrypt"]) | |||
|  |             { | |||
|  |                 case "1": | |||
|  |                 case "TRUE": | |||
|  |                 case "true": | |||
|  |                     return true; | |||
|  |                 default: | |||
|  |                     return false; | |||
|  |             } | |||
|  |         } | |||
|  |     }   | |||
|  | } |