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