配置文件:
<add name="NewOracleDB" providerName="System.Data.Oracle" connectionString="data source= (DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.98)(PORT = 1801))
)
(CONNECT_DATA =
(SERVICE_NAME = rcccdb)
)
);user id=rkdfege;password=rkdfege"/>
/// <summary>
/// 获取目标客户
/// </summary>
/// <param name="entryID"></param>
/// <returns></returns>
[Data]
public ActionResult GetExpTargetCustomer(ExpSearchModel expSearchModel)
{
var result = new List<ExpCustomerModel>();
ExpCustomerService proc = new ExpCustomerService();
List<CndModel> pars = new List<CndModel>();
//pars.Add(new CndModel("CustomerID IS NOT NULL "));
if (!string.IsNullOrWhiteSpace(expSearchModel.entryID))
{
pars.Add(new CndModel("EMPLOYEEID like '%" + expSearchModel.entryID + "%' or EMPLOYEENAME like '%" + expSearchModel.entryID + "%' "));
}
pars.Add(new CndModel("EMPLOYEEID is not null and EMPLOYEENAME is not null "));
result = proc.GetExpTargetCustomer(expSearchModel.pageSize, expSearchModel.page, pars, "order by EMPLOYEEID ");
return Json(result, JsonRequestBehavior.AllowGet);
}
/// <summary>
/// 获取目标客户(可分页)
/// </summary>
/// <param name="entryID"></param>
/// <returns></returns>
public List<ExpCustomerModel> GetExpTargetCustomer(int? pageSize, int? pageNumber, List<CndModel> pars, string orderStr)
{
string ConnStrPar = "NewOracleDB";
string sqlParam = @"CustomerID,CustomerName";
string sqlText = @"select employeeid as CustomerID,employeename as CustomerName from zx_mbkhgl_dtl_v";
var returnList = CommonHelper.GetOracleData<ExpCustomerModel>(sqlText, sqlParam, ConnStrPar, pageSize, pageNumber, pars, orderStr);
//计算本条件下的总数
var sqlNumText = @"select count(1) as TotalNum from zx_mbkhgl_dtl_v";
var numModel = CommonHelper.GetOracleDataNum<ExpCustomerModel>(sqlNumText, ConnStrPar, pars);
foreach (var item in returnList)
{
(item as ExpCustomerModel).CustomerGUID = Guid.NewGuid().ToString();
(item as ExpCustomerModel).TotalNum = numModel[0].TotalNum;
}
return returnList;
}
#region 读取Oracle数据库
public static List<T> GetOracleData<T>(string sqlText, string sqlParam, string ConnStrPar, int? pageSize, int? pageNumber, List<CndModel> pars, string orderStr) where T : new()
{
if (string.IsNullOrWhiteSpace(sqlText) || string.IsNullOrWhiteSpace(ConnStrPar))
{
return null;
}
if (sqlText.IndexOf("rownum") < 0)
{
sqlText = sqlText.Replace("from", " ,rownum rn from ");
}
List<T> list = new List<T>();
///分页开始和结束行
var startNum = (pageNumber - 1) * pageSize;
var endNum = pageSize * pageNumber;
if (startNum < 0)
startNum = 0;
if (endNum <= 0)
endNum = 50;
///查询条件解析
string sqlWhere = " where 1=1 ";
if (pars != null)
{
foreach (CndModel par in pars)
{
if (string.IsNullOrWhiteSpace(par.SqlWhere))
sqlWhere += " AND " + par.Name + par.LinkChar +
((par.Value is string) ? "'" + par.Value.ToString() + "'"
: par.Value);
else sqlWhere += " AND " + par.SqlWhere;
}
}
///排序字段
string sqlOrder = "";
if (!string.IsNullOrWhiteSpace(orderStr))
{
sqlOrder += orderStr;
}
///数据库连接实例
string connStr = ConfigurationManager.ConnectionStrings[ConnStrPar].ToString();
string dbName = "";
switch (ConnStrPar)
{
case "NewOracleDB":
dbName = "新系统";
break;
case "OldOracleDB":
dbName = "老系统";
break;
case "TravelOracleDB":
dbName = "出差申请系统";
break;
default:
break;
}
///表查询字符串
string newSqlText = @"select * from
(
select " + sqlParam + ",rownum rn" + @" from
(
" + sqlText + sqlWhere + sqlOrder + @"
)t
)
where rn>" + startNum + " and rn<=" + endNum;
OracleConnection conn = new OracleConnection(connStr);
OracleCommand cmd = new OracleCommand(newSqlText, conn);
///判断数据库连接状态
try
{
conn.Open();
}
catch (Exception ex)
{
EClaim.Common.Log.LogMsg("系统读取\\【数据库连接失败】", dbName + ", " + ex.Message);
ExceptionHelper.GenException(dbName + " 数据库连接失败!","400", Telegnosis.Framework.Constants.Enums.ExceptionType.Biz);
//throw new Exception(dbName + " 数据库连接失败!");
}
cmd.CommandType = System.Data.CommandType.Text;
///判断数据库语句问题
try
{
using (OracleDataReader dr = cmd.ExecuteReader())
{
while (dr.Read())
{
list.Add(CreateObject<T>(dr));
}
}
conn.Close();
}
catch (Exception ex)
{
EClaim.Common.Log.LogMsg("系统读取\\【数据库查询失败】", "数据库:" + dbName + ",SQL语句:" + newSqlText + ",错误信息" + ex.Message);
ExceptionHelper.GenException(dbName + " 数据库查询失败!", "400", Telegnosis.Framework.Constants.Enums.ExceptionType.Biz);
}
return list;
}