/// <summary> /// 获取DataAdapter /// </summary> /// <param name="dbType"></param> /// <param name="objConn"></param> /// <param name="strSql"></param> /// <returns></returns> private static OperationReturn GetDataAdapter(int dbType, IDbConnection objConn, string strSql) { OperationReturn optReturn = new OperationReturn(); optReturn.Result = true; optReturn.Code = Defines.RET_SUCCESS; switch (dbType) { case Defines.VCT_DBTYPE_MSSQL: optReturn.Data = MsSqlOperations.GetDataAdapter(objConn, strSql); break; //case Defines.VCT_DBTYPE_MYSQL: // optReturn.Data = MySqlOperations.GetDataAdapter(objConn, strSql); // break; //case Defines.VCT_DBTYPE_ORACLE: // optReturn.Data = OracleOperations.GetDataAdapter(objConn, strSql); // break; default: optReturn.Result = false; optReturn.Code = Defines.RET_NOT_IMPLIMENT; optReturn.Message = string.Format("Database not impliment now\t{0}", dbType); break; } return(optReturn); }
/// <summary> /// 执行存储过程 /// </summary> /// <param name="procedureName"></param> /// <param name="parameters"></param> /// <returns></returns> public OperationReturn ExecuteProcedure(string procedureName, List <DBCommandParameter> parameters) { OperationReturn optReturn = new OperationReturn(); optReturn.Result = true; optReturn.Code = Defines.RET_SUCCESS; if (mDBParam == null) { optReturn.Result = false; optReturn.Code = Defines.RET_OBJECT_NULL; optReturn.Message = string.Format("DatabaseParam is null"); return(optReturn); } if (mObjConnection == null) { string strConn = GetConnectionString(mDBParam); lock (mObjConnectionLocker) { optReturn = GetConnection(mDBParam.DBType, strConn); } if (!optReturn.Result) { return(optReturn); } mObjConnection = optReturn.Data as IDbConnection; } if (mObjConnection == null) { optReturn.Result = false; optReturn.Code = Defines.RET_OBJECT_NULL; optReturn.Message = string.Format("Connection is null"); return(optReturn); } try { IDbDataParameter[] arrDataParameters = new IDbDataParameter[parameters.Count]; for (int i = 0; i < parameters.Count; i++) { IDbDataParameter parameter; switch (parameters[i].DBType) { //case Defines.VCT_DBTYPE_MYSQL: // parameter = MySqlOperations.GetDataParameter(parameters[i]); // break; case Defines.VCT_DBTYPE_MSSQL: parameter = MsSqlOperations.GetDataParameter(parameters[i]); break; //case Defines.VCT_DBTYPE_ORACLE: // parameter = OracleOperations.GetDataParameter(parameters[i]); // break; default: optReturn.Result = false; optReturn.Code = Defines.RET_NOT_IMPLIMENT; optReturn.Message = string.Format("Database type not support.\t{0}", parameters[i].DBType); return(optReturn); } if (parameter == null) { optReturn.Result = false; optReturn.Code = Defines.RET_OBJECT_NULL; optReturn.Message = string.Format("Parameter is null"); return(optReturn); } parameter.Value = parameters[i].ParamValue; parameter.Direction = parameters[i].Direction; arrDataParameters[i] = parameter; } IDbCommand objCmd = mObjConnection.CreateCommand(); objCmd.CommandType = CommandType.StoredProcedure; objCmd.CommandText = procedureName; for (int i = 0; i < arrDataParameters.Length; i++) { objCmd.Parameters.Add(arrDataParameters[i]); } if (mObjConnection.State != ConnectionState.Open) { lock (mObjConnectionLocker) { mObjConnection.Open(); } } optReturn.IntValue = objCmd.ExecuteNonQuery(); for (int i = 0; i < arrDataParameters.Length; i++) { if (arrDataParameters[i].Direction == ParameterDirection.Output || arrDataParameters[i].Direction == ParameterDirection.InputOutput) { parameters[i].ParamValue = arrDataParameters[i].Value; } } optReturn.Data = parameters; } catch (Exception ex) { optReturn.Result = false; optReturn.Code = Defines.RET_FAIL; optReturn.Message = ex.Message; optReturn.Exception = ex; } return(optReturn); }