Exemple #1
0
        public static Type ConvertSreTypeIntoDotNetType(this SreAttribute attribute, DatabaseTypes databaseType)
        {
            switch (databaseType)
            {
            default:
                switch (attribute.Type.ToUpper())
                {
                case "INT":
                    return(typeof(int));

                case "BIGINT":
                    return(typeof(long));

                case "DECIMAL":
                    return(typeof(double));

                case "BIT":
                    return(typeof(bool));

                case "GENERATED":
                case "NOTREFERENCED":
                case "REFERENCED":
                case "CODESET":
                case "STRING":
                    return(typeof(string));

                case "DATETIME":
                    return(typeof(DateTime));

                default:
                    return(typeof(string));
                }
            }
        }
Exemple #2
0
 private void BindAttribute(SreAttribute attribute)
 {
 }
Exemple #3
0
 private void BindAttributeFirst(SreAttribute attribute)
 {
     txtr1c3.Text = attribute.Name;
 }
Exemple #4
0
        private StringBuilder WriteOutputToDatabaseOracle(List <Row> rows)
        {
            _Job.PerformanceCounter.Start(_Job.JobIdentifier, JobPerformanceTaskNames.OutputWriterOracle);

            ExtensionMethods.TraceInformation("Starting oracle bulk insert...");
            IDal          dal        = new DataAccessLayer(DatabaseTypes.Oracle).Instance;
            IDbConnection connection = dal.CreateConnection(ConnectionStringKey.Value);

            connection.Open();
            IDbCommand command = dal.CreateCommand();

            command.GetType().GetProperty("ArrayBindCount").SetValue(command, rows.Count, null);
            command.Connection = connection;
            ExtensionMethods.TraceInformation("Communication objects initialized. Creating arrays...");

            int counter = 0;
            //creating arrays & insert statement
            string insertStatementPart1 = string.Format("insert into {0} (", DatabaseMap.TargetTableName);
            string insertStatementPart2 = "values (";

            foreach (ColumnMapInfo columnMapInfo in DatabaseMap)
            {
                if ((!string.IsNullOrEmpty(columnMapInfo.InputColumn)) &&
                    (columnMapInfo.InputColumn != ColumnMapInfo.DatabaseDefault))
                {
                    counter++;

                    insertStatementPart1 += "\"" + columnMapInfo.OutputColumn + "\",";

                    if (columnMapInfo.InputColumn == ColumnMapInfo.CustomDefined)
                    {
                        insertStatementPart2 += string.Format("\"Customer_Id_Seq\".nextval,", counter);
                        continue;
                    }
                    else
                    {
                        insertStatementPart2 += string.Format(":{0},", counter);
                    }

                    SreAttribute attributeAvailable = _Job.DataSource.AcceptableAttributesSystem.Where(a => a.Name == columnMapInfo.InputColumn).SingleOrDefault();
                    if (attributeAvailable == null)
                    {
                        continue;
                    }

                    Type attributeType = attributeAvailable.ConvertSreTypeIntoDotNetType(DatabaseTypes.Oracle);

                    string[] strList = rows.Select(row => GetAttributeValue(row.ColumnsSystem[columnMapInfo.InputColumn], true)).ToArray();

                    if (attributeType == typeof(int))
                    {
                        List <int?> list = strList.Select(s => s.GetValueOrNull <int>()).ToList();
                        command.AddParameterWithValue(columnMapInfo.OutputColumn, list.ToArray(), true);
                    }
                    else if (attributeType == typeof(long))
                    {
                        List <long?> list = strList.Select(s => s.GetValueOrNull <long>()).ToList();
                        command.AddParameterWithValue(columnMapInfo.OutputColumn, list.ToArray(), true);
                    }
                    else if (attributeType == typeof(double))
                    {
                        List <double?> list = strList.Select(s => s.GetValueOrNull <double>()).ToList();
                        command.AddParameterWithValue(columnMapInfo.OutputColumn, list.ToArray(), true);
                    }
                    else if (attributeType == typeof(bool))
                    {
                        List <bool?> list = strList.Select(s => s.GetValueOrNull <bool>()).ToList();
                        command.AddParameterWithValue(columnMapInfo.OutputColumn, list.ToArray(), true);
                    }
                    else if (attributeType == typeof(DateTime))
                    {
                        List <DateTime?> list = strList.Select(s => s.GetValueOrNull <DateTime>()).ToList();
                        command.AddParameterWithValue(columnMapInfo.OutputColumn, list.ToArray(), true);
                    }
                    else
                    {
                        command.AddParameterWithValue(columnMapInfo.OutputColumn, strList, true);
                    }
                }
            }

            if (insertStatementPart1.Length > 1)
            {
                insertStatementPart1 = insertStatementPart1.Substring(0, insertStatementPart1.Length - 1);
            }
            if (insertStatementPart2.Length > 1)
            {
                insertStatementPart2 = insertStatementPart2.Substring(0, insertStatementPart2.Length - 1);
            }

            command.CommandText = string.Format("{0}) {1})", insertStatementPart1, insertStatementPart2);
            ExtensionMethods.TraceInformation("Arrays created. Executing statement - '{0}'", command.CommandText);
            command.ExecuteNonQuery();

            connection.Close();
            connection.Dispose();

            ExtensionMethods.TraceInformation("Oracle bulk insert finished.");
            Trace.Flush();
            _Job.PerformanceCounter.Stop(_Job.JobIdentifier, JobPerformanceTaskNames.OutputWriterOracle);

            return(new StringBuilder());
        }