Exemple #1
0
 public ColumnMapping(int colIndex, string excelColName, InformationSchemaColumns dbColInfo)
 {
     this.ColIndex     = colIndex;
     this.ExcelColName = excelColName;
     this.DbColInfo    = dbColInfo;
     if (dbColInfo.DATA_TYPE == "char" ||
         dbColInfo.DATA_TYPE == "nchar" ||
         dbColInfo.DATA_TYPE == "varchar" ||
         dbColInfo.DATA_TYPE == "nvarchar" ||
         dbColInfo.DATA_TYPE == "text" ||
         dbColInfo.DATA_TYPE == "mediumtext" ||
         dbColInfo.DATA_TYPE == "longtext" ||
         dbColInfo.DATA_TYPE == "date" ||
         dbColInfo.DATA_TYPE == "time" ||
         dbColInfo.DATA_TYPE == "datetime" ||
         dbColInfo.DATA_TYPE == "timestamp")
     {
         this.NeedSingleQuotes = true;
     }
     else
     {
         this.NeedSingleQuotes = false;
     }
 }
 public IList <SISColumn> GetPrimaryKeyColumns()
 {
     return(InformationSchemaColumns
            .Where(IsColumnPrimaryKey)
            .ToList());
 }
        private bool Validate(InformationSchemaColumns field, string columnValue, out string error)
        {
            bool ret = true;

            error = String.Empty;

            // 非空验证
            if (String.IsNullOrEmpty(columnValue) || columnValue.ToUpper() == "NULL")
            {
                if (field.IS_NULLABLE == "NO")
                {
                    error = "非空验证未通过";
                    ret   = false;
                }
            }
            else if (field.DATA_TYPE == "tinyint")
            {
                int val;
                if (!Int32.TryParse(columnValue, out val))
                {
                    error = "非合法数字";
                    ret   = false;
                }
                else if (val < SByte.MinValue || val > SByte.MaxValue)
                {
                    error = "数值超出范围 [-128 ~ 127]";
                    ret   = false;
                }
            }
            else if (field.DATA_TYPE == "smallint")
            {
                int val;
                if (!Int32.TryParse(columnValue, out val))
                {
                    error = "非合法数字";
                    ret   = false;
                }
                else if (val < Int16.MinValue || val > Int16.MaxValue)
                {
                    error = "数值超出范围 [-32,768 ~ 32,767]";
                    ret   = false;
                }
            }
            else if (field.DATA_TYPE == "mediumint")
            {
                int val;
                if (!Int32.TryParse(columnValue, out val))
                {
                    error = "非合法数字";
                    ret   = false;
                }
                else if (val < -8388608 || val > 8388607)
                {
                    error = "数值超出范围 [-8,388,608 ~ 8,388,607]";
                    ret   = false;
                }
            }
            else if (field.DATA_TYPE == "int")
            {
                int val;
                if (!Int32.TryParse(columnValue, out val))
                {
                    error = "非合法数字";
                    ret   = false;
                }
                else if (val < Int32.MinValue || val > Int32.MaxValue)
                {
                    error = "数值超出范围 [-2,147,483,648 ~ 2,147,483,647]";
                    ret   = false;
                }
            }
            else if (field.DATA_TYPE == "bigint")
            {
                long val;
                if (!Int64.TryParse(columnValue, out val))
                {
                    error = "非合法数字";
                    ret   = false;
                }
                else if (val < Int64.MinValue || val > Int64.MaxValue)
                {
                    error = "数值超出范围 [-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807]";
                    ret   = false;
                }
            }
            else if (field.DATA_TYPE == "float")
            {
                float val;
                if (!Single.TryParse(columnValue, out val))
                {
                    error = "非合法数字";
                    ret   = false;
                }
            }
            else if (field.DATA_TYPE == "double")
            {
                double val;
                if (!Double.TryParse(columnValue, out val))
                {
                    error = "非合法数字";
                    ret   = false;
                }
            }
            else if (field.DATA_TYPE == "decimal")
            {
                decimal val;
                if (!Decimal.TryParse(columnValue, out val))
                {
                    error = "非合法数字";
                    ret   = false;
                }
            }
            else if (field.DATA_TYPE == "char" ||
                     field.DATA_TYPE == "nchar" ||
                     field.DATA_TYPE == "varchar" ||
                     field.DATA_TYPE == "nvarchar" ||
                     field.DATA_TYPE == "text" ||
                     field.DATA_TYPE == "mediumtext" ||
                     field.DATA_TYPE == "longtext")
            {
                uint maxLen = UInt32.Parse(field.CHARACTER_MAXIMUM_LENGTH);
                if (columnValue.Length > maxLen)
                {
                    error = String.Format("字符数超出最大限制 [{0}]", maxLen);
                    ret   = false;
                }
            }
            else if (field.DATA_TYPE == "date" ||
                     field.DATA_TYPE == "time" ||
                     field.DATA_TYPE == "datetime" ||
                     field.DATA_TYPE == "timestamp")
            {
                if (columnValue.ToUpper() != "NOW()")
                {
                    DateTime val;
                    if (!DateTime.TryParse(columnValue, out val))
                    {
                        error = "非合法日期/时间";
                        ret   = false;
                    }
                }
            }

            return(ret);
        }