Пример #1
0
        private void InitParameters(Parse headerCells)
        {
            Dictionary <String, DbParameterAccessor> allParams =
                dbEnvironment.GetAllProcedureParameters(procedureName);

            accessors = new DbParameterAccessor[headerCells.Size];
            for (int i = 0; headerCells != null; i++, headerCells = headerCells.More)
            {
                String paramName = NameNormaliser.NormaliseName(headerCells.Text);
                try
                {
                    accessors[i] = DbParameterAccessor.CloneWithSameParameter(allParams[paramName]);
                }
                catch (System.Collections.Generic.KeyNotFoundException)
                {
                    Wrong(headerCells);
                    throw new ApplicationException("Cannot find parameter " + paramName);
                }
                accessors[i].IsBoundToCheckOperation = checkIsImpliedByRegex.IsMatch(headerCells.Text);
                // sql server quirk. if output parameter is used in an input column, then
                // the param should be remapped to IN/OUT
                if ((!accessors[i].IsBoundToCheckOperation) &&
                    accessors[i].DbParameter.Direction == ParameterDirection.Output)
                {
                    accessors[i].DbParameter.Direction = ParameterDirection.InputOutput;
                }
            }
        }
        private void InitParameters(Parse headerCells)
        {
            Dictionary <String, DbParameterAccessor> allParams =
                dbEnvironment.GetAllProcedureParameters(procedureName);

            columnAccessors = new ColumnAccessors();
            for (int i = 0; headerCells != null; i++, headerCells = headerCells.More)
            {
                String paramName = NameNormaliser.NormaliseName(headerCells.Text);
                try
                {
                    DbParameterAccessor accessor = DbParameterAccessor.CloneWithSameParameter(allParams[paramName]);
                    accessor.IsBoundToCheckOperation = BindingFactory.CheckIsImpliedBy(headerCells.Text);
                    // sql server quirk. if output parameter is used in an input column, then
                    // the param should be remapped to IN/OUT
                    if ((!accessor.IsBoundToCheckOperation) &&
                        accessor.DbParameter.Direction == ParameterDirection.Output)
                    {
                        accessor.DbParameter.Direction = ParameterDirection.InputOutput;
                    }
                    columnAccessors.Assign(paramName, accessor);
                    accessors.Add(accessor);
                }
                catch (KeyNotFoundException)
                {
                    Wrong(headerCells);
                    throw new ApplicationException("Cannot find parameter " + paramName);
                }
            }
        }
Пример #3
0
        public void ShouldMapDisconnectedDataStructureToDbParameterAccessor()
        {
            DbParameterAccessor accessor = MySqlTypeConverter.BuildDbParameterAccessorFrom(bigIntcolumnInfo, 0);

            Assert.That(accessor.ActualSqlType, Is.EqualTo(bigIntcolumnInfo.Datatype));
            Assert.That(accessor.DbFieldName, Is.EqualTo(bigIntcolumnInfo.ColumnName));
            Assert.That(accessor.Position, Is.EqualTo(0));
            Assert.That(accessor.DbParameter.Direction, Is.EqualTo(ParameterDirection.Input));
            Assert.That(accessor.DbParameter.Size, Is.EqualTo(bigIntcolumnInfo.Size));
        }
Пример #4
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;
 }
Пример #5
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);
 }
Пример #6
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);
        }
        public static DbParameterAccessor[] SortAccessors(IEnumerable <DbParameterAccessor> accessors)
        {
            var sortedAccessors = new List <DbParameterAccessor>(accessors);

            for (int i = 0; i < sortedAccessors.Count - 1; i++)
            {
                for (int j = i + 1; j < sortedAccessors.Count; j++)
                {
                    if (sortedAccessors[i].Position <= sortedAccessors[j].Position)
                    {
                        continue;
                    }
                    DbParameterAccessor x = sortedAccessors[i];
                    sortedAccessors[i] = sortedAccessors[j];
                    sortedAccessors[j] = x;
                }
            }
            return(sortedAccessors.ToArray());
        }
Пример #8
0
        public void SortAccessorsInRightOrder()
        {
            //Prepare
            DbParameterAccessor[] accessorsToOrder = new DbParameterAccessor[4];
            accessorsToOrder[0] = new DbParameterAccessor(new System.Data.SqlClient.SqlParameter(), typeof(string), 1, "String");
            accessorsToOrder[3] = new DbParameterAccessor(new System.Data.SqlClient.SqlParameter(), typeof(string), 3, "String");
            accessorsToOrder[2] = new DbParameterAccessor(new System.Data.SqlClient.SqlParameter(), typeof(string), 5, "String");
            accessorsToOrder[1] = new DbParameterAccessor(new System.Data.SqlClient.SqlParameter(), typeof(string), 7, "String");


            //Execute
            DbParameterAccessor[] resultingAccessors = ExecuteProcedure.SortAccessors(accessorsToOrder);

            //Verify
            Assert.AreEqual(1, resultingAccessors[0].Position);
            Assert.AreEqual(3, resultingAccessors[1].Position);
            Assert.AreEqual(5, resultingAccessors[2].Position);
            Assert.AreEqual(7, resultingAccessors[3].Position);
        }
Пример #9
0
        public void SortAccessorsInRightOrder()
        {
            //Prepare
            DbParameterAccessor[] accessorsToOrder = new DbParameterAccessor[4];
            accessorsToOrder[0]=new DbParameterAccessor(new System.Data.SqlClient.SqlParameter(), typeof(string), 1, "String");
            accessorsToOrder[3]=new DbParameterAccessor(new System.Data.SqlClient.SqlParameter(), typeof(string), 3, "String");
            accessorsToOrder[2]=new DbParameterAccessor(new System.Data.SqlClient.SqlParameter(), typeof(string), 5, "String");
            accessorsToOrder[1]=new DbParameterAccessor(new System.Data.SqlClient.SqlParameter(), typeof(string), 7, "String");

            
            //Execute
            DbParameterAccessor[] resultingAccessors = ExecuteProcedure.SortAccessors(accessorsToOrder);

            //Verify
            Assert.AreEqual(1, resultingAccessors[0].Position);
            Assert.AreEqual(3, resultingAccessors[1].Position);
            Assert.AreEqual(5, resultingAccessors[2].Position);
            Assert.AreEqual(7, resultingAccessors[3].Position);
        }
Пример #10
0
        public void ShouldMapSourceColumnToDbParameterAccessorForStringColumn()
        {
            DbParameterAccessor accessor = MySqlTypeConverter.BuildDbParameterAccessorFrom(stringColumnInfo, 0);

            Assert.That(accessor.DbParameter.SourceColumn, Is.EqualTo(stringColumnInfo.ColumnName));
        }
Пример #11
0
        public void ShouldMapRunTimeTypeToDbParameterAccessorForStringColumn()
        {
            DbParameterAccessor accessor = MySqlTypeConverter.BuildDbParameterAccessorFrom(stringColumnInfo, 0);

            Assert.That(accessor.DotNetType, Is.EqualTo(typeof(string)));
        }
Пример #12
0
        public void ShouldMapMySqlTypeToDbParameterAccessorForStringColumn()
        {
            DbParameterAccessor accessor = MySqlTypeConverter.BuildDbParameterAccessorFrom(stringColumnInfo, 0);

            Assert.That(accessor.DbParameter.DbType, Is.EqualTo(DbType.String));
        }
Пример #13
0
        public void ShouldMapMySqlTypeToDbParameterAccessorForBigIntColumn()
        {
            DbParameterAccessor accessor = MySqlTypeConverter.BuildDbParameterAccessorFrom(bigIntcolumnInfo, 0);

            Assert.That(accessor.DbParameter.DbType, Is.EqualTo(DbType.Int64));
        }