Пример #1
0
 internal static DbParameterAccessor[] SortAccessors(DbParameterAccessor[] accessors)
 {
     DbParameterAccessor[] sortedAccessors = (DbParameterAccessor[])accessors.Clone();
     for (int i=0; i<sortedAccessors.Length-1; i++)
         for (int j=i+1; j<sortedAccessors.Length; j++)
         {   
             if (sortedAccessors[i].Position > sortedAccessors[j].Position)
             {
                 DbParameterAccessor x = sortedAccessors[i];
                 sortedAccessors[i] = sortedAccessors[j];
                 sortedAccessors[j] = x;
             }
         }
     return sortedAccessors;
 }
Пример #2
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);
        }