示例#1
0
        //private void ProcessProsWithTempReferences(List<StoredProcDef> storedProcs)
        //{
        //    bool added = true;

        //    while (added)
        //    {
        //        added = false;

        //        for (int i = 0; i < storedProcs.Count; i++)
        //        {
        //            string name = storedProcs[i].Name;
        //            name = name.Substring(0, name.IndexOf("|"));

        //            if (StoredProcsWithTempReferences.BinarySearch(name) >= 0)
        //            {
        //                continue;
        //            }

        //            for (int procCounter = 0; procCounter < StoredProcsWithTempReferences.Count; procCounter++)
        //            {
        //                string badProc = StoredProcsWithTempReferences[procCounter];

        //                if (storedProcs[i].Body.IndexOf(badProc) > 0)
        //                {
        //                    StoredProcsWithTempReferences.Add(name);
        //                    StoredProcsWithTempReferences.Sort();
        //                    added = true;
        //                    break;
        //                }
        //            }
        //        }
        //    }
        //}

        private Model.StoredProcedure GetNewStoredProcedure(string storedProcedureName, string schema)
        {
            if (string.IsNullOrEmpty(schema))
            {
                throw new ArgumentException("Schema must be specified to get stored proc.");
            }

            Interfaces.Events.RaiseObjectBeingProcessedEvent(storedProcedureName, "SP");
            //_columns = null;
            //_parameters = null;
            Model.StoredProcedure storedProcedure = new Model.StoredProcedure(storedProcedureName, false);
            storedProcedure.Enabled = false;


            storedProcedure.Schema = schema;

            DataRow[] parameterRows = Parameters.Select(string.Format("ProcedureName = '{0}'", storedProcedureName));
            foreach (DataRow parameterRow in parameterRows)
            {
                Model.StoredProcedure.Parameter parameter = new Model.StoredProcedure.Parameter(
                    parameterRow["PARAMETER_NAME"].ToString().Replace("@", ""),
                    parameterRow["DATA_TYPE"].ToString(),
                    parameterRow["PARAMETER_MODE"].ToString(),
                    int.Parse(parameterRow["ORDINAL_POSITION"].ToString()),
                    parameterRow.IsNull("CHARACTER_MAXIMUM_LENGTH") ? 0 : int.Parse(parameterRow["CHARACTER_MAXIMUM_LENGTH"].ToString()),
                    parameterRow.IsNull("NUMERIC_PRECISION") ? 0 : int.Parse(parameterRow["NUMERIC_PRECISION"].ToString()),
                    parameterRow.IsNull("NUMERIC_SCALE") ? 0 : int.Parse(parameterRow["NUMERIC_SCALE"].ToString()));
                storedProcedure.AddParameter(parameter);
            }
            FillStoredProcedureColumns(storedProcedure);

            return(storedProcedure);
        }
示例#2
0
        public override bool Save()
        {
            frmAssociationWizard.Association.Mappings.Clear();
            frmAssociationWizard.Association.Enabled = true;

            foreach (DataGridViewRow row in gridMappings.Rows)
            {
                string primaryColumnName       = row.Cells[0].Value == null ? "" : row.Cells[0].Value.ToString();
                string associatedColumnName    = row.Cells[1].Value == null ? "" : row.Cells[1].Value.ToString();
                string associatedParameterName = row.Cells[2].Value == null ? "" : row.Cells[2].Value.ToString();
                primaryColumnName = primaryColumnName.Substring(0, primaryColumnName.IndexOf("(")).Trim();

                if (!string.IsNullOrEmpty(associatedColumnName))
                {
                    associatedColumnName = associatedColumnName.Substring(0, associatedColumnName.IndexOf("(")).Trim();
                }
                if (!string.IsNullOrEmpty(associatedParameterName))
                {
                    associatedParameterName = associatedParameterName.Substring(1, associatedParameterName.IndexOf("(") - 1).Trim();
                }
                Model.Column primaryColumn    = null;
                Model.Column associatedColumn = null;
                Model.StoredProcedure.Parameter associatedParameter = null;

                foreach (Model.Column column in frmAssociationWizard.Association.PrimaryObject.Columns)
                {
                    if (Slyce.Common.Utility.StringsAreEqual(column.Alias, primaryColumnName, false))
                    {
                        primaryColumn = column;
                        break;
                    }
                }
                foreach (Model.Column column in frmAssociationWizard.Association.AssociatedObject.Columns)
                {
                    if (Slyce.Common.Utility.StringsAreEqual(column.Alias, associatedColumnName, false))
                    {
                        associatedColumn = column;
                        break;
                    }
                }
                if (typeof(Model.StoredProcedure).IsInstanceOfType(frmAssociationWizard.Association.AssociatedObject))
                {
                    foreach (Model.StoredProcedure.Parameter parameter in ((Model.StoredProcedure)frmAssociationWizard.Association.AssociatedObject).Parameters)
                    {
                        if (Slyce.Common.Utility.StringsAreEqual(parameter.Alias, associatedParameterName, false))
                        {
                            associatedParameter = parameter;
                            break;
                        }
                    }
                }
                Model.Association.Mapping mapping = new Model.Association.Mapping(primaryColumn, associatedColumn, associatedParameter);
                frmAssociationWizard.Association.Mappings.Add(mapping);
            }
            return(true);
        }
        private Model.StoredProcedure GetNewStoredProcedure(string storedProcedureName)
        {
            ArchAngel.Interfaces.ProjectHelper.RaiseObjectBeingProcessedEvent(storedProcedureName, "SP");
            _parameters = null;
            Model.StoredProcedure storedProcedure = new Model.StoredProcedure(storedProcedureName, false);
            storedProcedure.Enabled = false;

            DataRow[] parameterRows = Parameters.Select(string.Format("ProcedureName = '{0}'", storedProcedureName));
            foreach (DataRow parameterRow in parameterRows)
            {
                Model.StoredProcedure.Parameter parameter = new Model.StoredProcedure.Parameter(parameterRow["PARAMETER_NAME"].ToString(), parameterRow["DATA_TYPE"].ToString(),
                                                                                                parameterRow["PARAMETER_MODE"].ToString(), System.Convert.ToInt32(parameterRow["ORDINAL_POSITION"]), parameterRow.IsNull("CHARACTER_MAXIMUM_LENGTH") ? 0 : System.Convert.ToInt32(parameterRow["CHARACTER_MAXIMUM_LENGTH"]));
                storedProcedure.AddParameter(parameter);
            }

            return(storedProcedure);
        }
        public void FillStoredProcedureColumns(Model.StoredProcedure storedProcedure)
        {
            string sql = "exec [" + storedProcedure.Name + "] ";

            for (int i = 0; i < storedProcedure.Parameters.Length; i++)
            {
                Model.StoredProcedure.Parameter parameter = storedProcedure.Parameters[i];
                sql += parameter.Name + "=NULL";
                if (i < storedProcedure.Parameters.Length - 1)
                {
                    sql += ", ";
                }
            }

            DataTable dataTable = RunQueryDataTable(sql);

            while (storedProcedure.Columns.Length > 0)
            {
                storedProcedure.RemoveColumn(storedProcedure.Columns[0]);
            }

            foreach (DataColumn dataColumn in dataTable.Columns)
            {
                Column column = new Column(
                    dataColumn.ColumnName,
                    false,
                    storedProcedure,
                    dataColumn.Ordinal,
                    dataColumn.AllowDBNull,
                    GetSqlDataType(dataColumn.DataType),
                    0,
                    false,
                    dataColumn.AutoIncrement,
                    dataColumn.DefaultValue.ToString(),
                    false);

                if (IsSupported(column))
                {
                    storedProcedure.AddColumn(column);
                }
            }
        }
示例#5
0
        //private void ProcessProsWithTempReferences(List<StoredProcDef> storedProcs)
        //{
        //    bool added = true;
        //    while (added)
        //    {
        //        added = false;
        //        for (int i = 0; i < storedProcs.Count; i++)
        //        {
        //            string name = storedProcs[i].Name;
        //            name = name.Substring(0, name.IndexOf("|"));
        //            if (StoredProcsWithTempReferences.BinarySearch(name) >= 0)
        //            {
        //                continue;
        //            }
        //            for (int procCounter = 0; procCounter < StoredProcsWithTempReferences.Count; procCounter++)
        //            {
        //                string badProc = StoredProcsWithTempReferences[procCounter];
        //                if (storedProcs[i].Body.IndexOf(badProc) > 0)
        //                {
        //                    StoredProcsWithTempReferences.Add(name);
        //                    StoredProcsWithTempReferences.Sort();
        //                    added = true;
        //                    break;
        //                }
        //            }
        //        }
        //    }
        //}
        private Model.StoredProcedure GetNewStoredProcedure(string storedProcedureName, string schema)
        {
            if (string.IsNullOrEmpty(schema))
                throw new ArgumentException("Schema must be specified to get stored proc.");

            Interfaces.Events.RaiseObjectBeingProcessedEvent(storedProcedureName, "SP");
            //_columns = null;
            //_parameters = null;
            Model.StoredProcedure storedProcedure = new Model.StoredProcedure(storedProcedureName, false);
            storedProcedure.Enabled = false;

            storedProcedure.Schema = schema;

            DataRow[] parameterRows = Parameters.Select(string.Format("ProcedureName = '{0}'", storedProcedureName));
            foreach (DataRow parameterRow in parameterRows)
            {
                Model.StoredProcedure.Parameter parameter = new Model.StoredProcedure.Parameter(
                    parameterRow["PARAMETER_NAME"].ToString().Replace("@", ""),
                    parameterRow["DATA_TYPE"].ToString(),
                    parameterRow["PARAMETER_MODE"].ToString(),
                    int.Parse(parameterRow["ORDINAL_POSITION"].ToString()),
                    parameterRow.IsNull("CHARACTER_MAXIMUM_LENGTH") ? 0 : int.Parse(parameterRow["CHARACTER_MAXIMUM_LENGTH"].ToString()),
                    parameterRow.IsNull("NUMERIC_PRECISION") ? 0 : int.Parse(parameterRow["NUMERIC_PRECISION"].ToString()),
                    parameterRow.IsNull("NUMERIC_SCALE") ? 0 : int.Parse(parameterRow["NUMERIC_SCALE"].ToString()));
                storedProcedure.AddParameter(parameter);
            }
            FillStoredProcedureColumns(storedProcedure);

            return storedProcedure;
        }
示例#6
0
        private Model.StoredProcedure GetNewStoredProcedure(string storedProcedureName)
        {
            ArchAngel.Interfaces.ProjectHelper.RaiseObjectBeingProcessedEvent(storedProcedureName, "SP");
            _parameters = null;
            Model.StoredProcedure storedProcedure = new Model.StoredProcedure(storedProcedureName, false);
            storedProcedure.Enabled = false;

            DataRow[] parameterRows = Parameters.Select(string.Format("ProcedureName = '{0}'", storedProcedureName));
            foreach (DataRow parameterRow in parameterRows)
            {
                Model.StoredProcedure.Parameter parameter = new Model.StoredProcedure.Parameter(parameterRow["PARAMETER_NAME"].ToString(), parameterRow["DATA_TYPE"].ToString(),
                    parameterRow["PARAMETER_MODE"].ToString(), System.Convert.ToInt32(parameterRow["ORDINAL_POSITION"]), parameterRow.IsNull("CHARACTER_MAXIMUM_LENGTH") ? 0 : System.Convert.ToInt32(parameterRow["CHARACTER_MAXIMUM_LENGTH"]));
                storedProcedure.AddParameter(parameter);
            }

            return storedProcedure;
        }