using System; using System.Collections.Generic; using System.Text; //using System.Data.OracleClient; using System.Data.SqlClient; using System.Data.OleDb; using DeiNiu.Utils; namespace DeiNiu.Data.DataAccess { [Serializable] public class Connection {   //static string sqlcon_str = System.Configuration.ConfigurationManager.AppSettings["SqlConnectionString"]; // private static string _ConnectionString = null; private string sqlcon_str { get { /* if (_ConnectionString == null) _ConnectionString = (dt == enumDbInstance.wms? wmsConString() : platformConString());// System.Configuration.ConfigurationManager.AppSettings["SqlConnectionString"]; return _ConnectionString; */ return dt == enumDbInstance.platForm ?platformConString() : wmsConString() ; } } private enumDbInstance dt = enumDbInstance.platForm; //private OracleConnection _OrclCon = null; private SqlConnection _sqlCon = null; // private OleDbConnection _oledbCon = null; public SqlConnection getSqlCon(enumDbInstance dt) { this.dt = dt; try { _sqlCon = new SqlConnection(sqlcon_str); //SqlConnection.ClearPool(_sqlCon); //https://stackoverflow.com/questions/26340644/sql-server-pre-login-handshake _sqlCon.Open(); return _sqlCon; } catch (Exception ex) { LogHelper.WriteLog(typeof(Connection), ex); throw ex; } } /* public OracleConnection getOraCon() { try { _OrclCon = new OracleConnection(oracon_str); _OrclCon.Open(); return _OrclCon; } catch (Exception ex) { throw ex; } } public OleDbConnection getOleCon() { try { //oledb_str = "Provider=OraOLEDB.Oracle.1;Password=welcome;Persist Security Info=True;User ID=hradmin;Data Source=cpor"; _oledbCon = new OleDbConnection(oledb_str); _oledbCon.Open(); return _oledbCon; } catch (Exception ex) { throw ex; } } */ /// /// 数据库连接字符串,自动判断加密状态并获取对应连接字符串。 /// /// public static string wmsConString() { if (!string.IsNullOrEmpty(WmsConstants.SQL_CONN_WMS)) { return WmsConstants.SQL_CONN_WMS; } string cstr = System.Configuration.ConfigurationManager.AppSettings["SqlConnWMS"]; WmsConstants.SQL_CONN_WMS = cstr; if (IsEncrypt()) { // string cstr = System.Configuration.ConfigurationManager.AppSettings["SqlConnectionString"]; try { //解密后的数据库连接字符串 WmsConstants.SQL_CONN_WMS = cstr; return cstr; } catch { //如果勾选加密,第一次登陆时取到的是未加密连接字符串,所以直接返回。如果返回空字符串会导致首次登陆失败。 //ConfigurationManager.AppSettings["ConnectionString"] = string.Empty; //return string.Empty; WmsConstants.SQL_CONN_WMS = cstr; return cstr; } } else { //无须解密的数据库连接字符串 return cstr;// System.Configuration.ConfigurationManager.AppSettings["SqlConnectionString"]; } } /// /// 数据库连接字符串,自动判断加密状态并获取对应连接字符串。 /// /// public static string platformConString() { return ""; } /// /// 验证是否已加密 /// /// internal static bool IsEncrypt() { switch (System.Configuration.ConfigurationManager.AppSettings["ConStringEncrypt"]) { case "1": case "TRUE": case "true": return true; default: return false; } } } }