Ejemplo n.º 1
0
        private void InspectTable(Parse table)
        {
            Dictionary <String, DbParameterAccessor> allParams =
                environment.GetAllColumns(objectName);

            if (allParams.Count == 0)
            {
                throw new ApplicationException("Cannot retrieve list of columns for table or view " + objectName + " - check spelling and access rights");
            }
            addRowWithParamNames(table, allParams);
        }
Ejemplo n.º 2
0
        // this method will initialise accessors array from the parameters that
        // really go into the insert command and columnAccessors for all columns
        private void InitParameters(Parse headerCells)
        {
            Dictionary <String, DbParameterAccessor> allParams =
                dbEnvironment.GetAllColumns(parameterTableType);

            columnAccessors = new ColumnAccessors();
            isOutputColumn  = new bool[headerCells.Size];
            var paramAccessors = new List <DbParameterAccessor>();

            for (int i = 0; headerCells != null; i++, headerCells = headerCells.More)
            {
                String paramName = NameNormaliser.NormaliseName(headerCells.Text);
                DbParameterAccessor currentColumn;
                try
                {
                    currentColumn = allParams[paramName];
                }
                catch (KeyNotFoundException)
                {
                    Wrong(headerCells);
                    throw new ApplicationException("Cannot find column " + paramName);
                }
                isOutputColumn[i] = BindingFactory.CheckIsImpliedBy(headerCells.Text);
                currentColumn.IsBoundToCheckOperation = isOutputColumn[i];
                columnAccessors.Assign(paramName, currentColumn);
                if (isOutputColumn[i])
                {
                    if (dbEnvironment.SupportsReturnOnInsert)
                    {
                        currentColumn.DbParameter.Direction = ParameterDirection.Output;
                        paramAccessors.Add(currentColumn);
                    }
                    else // don't add to paramAccessors
                    {
                        //columnAccessors.Assign(paramName, new IdRetrievalAccessor(dbEnvironment, currentColumn.DotNetType));
                        columnAccessors.Assign(paramName, new IdRetrievalAccessor(dbEnvironment, currentColumn.DotNetType, parameterTableType));
                    }
                }
                else // not output
                {
                    currentColumn.DbParameter.Direction = ParameterDirection.Input;
                    paramAccessors.Add(currentColumn);
                }

                table.Columns.Add(currentColumn.DbFieldName, currentColumn.DotNetType);
            }
            accessors = paramAccessors.ToArray();
        }
Ejemplo n.º 3
0
        // this method will initialise accessors array from the parameters that
        // really go into the insert command and columnAccessors for all columns
        private void InitParameters(Parse headerCells)
        {
            Dictionary <String, DbParameterAccessor> allParams =
                dbEnvironment.GetAllColumns(tableName);

            columnAccessors = new Accessor[headerCells.Size];
            isOutputColumn  = new bool[headerCells.Size];
            List <DbParameterAccessor> paramAccessors = new List <DbParameterAccessor>();

            for (int i = 0; headerCells != null; i++, headerCells = headerCells.More)
            {
                String paramName = NameNormaliser.NormaliseName(headerCells.Text);
                DbParameterAccessor currentColumn;
                try
                {
                    currentColumn = allParams[paramName];
                }
                catch (System.Collections.Generic.KeyNotFoundException)
                {
                    Wrong(headerCells);
                    throw new ApplicationException("Cannot find column " + paramName);
                }
                isOutputColumn[i] = checkIsImpliedByRegex.IsMatch(headerCells.Text);
                currentColumn.IsBoundToCheckOperation = isOutputColumn[i];
                columnAccessors[i] = currentColumn;
                if (isOutputColumn[i])
                {
                    if (dbEnvironment.SupportsReturnOnInsert)
                    {
                        currentColumn.DbParameter.Direction = ParameterDirection.Output;
                        paramAccessors.Add(currentColumn);
                    }
                    else // don't add to paramAccessors
                    {
                        columnAccessors[i] = new dbfit.util.IdRetrievalAccessor(dbEnvironment, currentColumn.DotNetType);
                    }
                }
                else // not output
                {
                    currentColumn.DbParameter.Direction = ParameterDirection.Input;
                    paramAccessors.Add(currentColumn);
                }
            }
            accessors = paramAccessors.ToArray();
        }
Ejemplo n.º 4
0
        private void InitParameters(Parse headerCells)
        {
            Dictionary <String, DbParameterAccessor> allParams =
                dbEnvironment.GetAllColumns(tableName);

            columnAccessors = new ColumnAccessors();
            IList <DbParameterAccessor> selectAccList = new List <DbParameterAccessor>();
            IList <DbParameterAccessor> updateAccList = new List <DbParameterAccessor>();

            for (int i = 0; headerCells != null; i++, headerCells = headerCells.More)
            {
                String paramName = NameNormaliser.NormaliseName(headerCells.Text);
                try
                {
                    DbParameterAccessor acc = allParams[paramName];
                    acc.DbParameter.Direction = ParameterDirection.Input;
                    // allow same column to be used in both sides:
                    // remap update parameters to u_paramname and select to s_paramname
                    acc = DbParameterAccessor.Clone(acc, dbEnvironment);
                    if (headerCells.Text.EndsWith("="))
                    {
                        acc.DbParameter.ParameterName = acc.DbParameter.ParameterName + "_u";
                        updateAccList.Add(acc);
                        columnAccessors.Assign(paramName + "=", acc);
                    }
                    else
                    {
                        acc.DbParameter.ParameterName = acc.DbParameter.ParameterName + "_s";
                        selectAccList.Add(acc);
                        columnAccessors.Assign(paramName, acc);
                    }
                }
                catch (KeyNotFoundException)
                {
                    Wrong(headerCells);
                    throw new ApplicationException("Cannot find column for " + paramName);
                }
            }
            selectAccessors = new DbParameterAccessor[selectAccList.Count];
            selectAccList.CopyTo(selectAccessors, 0);
            updateAccessors = new DbParameterAccessor[updateAccList.Count];
            updateAccList.CopyTo(updateAccessors, 0);
        }