private static void ConvertToXSDDataType(XSD_DATA_TYPES dataType, ref string attValue) { switch (dataType) { case XSD_DATA_TYPES.xsd_long: attValue = "0"; break; case XSD_DATA_TYPES.xsd_boolean: attValue = "0"; break; case XSD_DATA_TYPES.xsd_string: attValue = "0"; break; case XSD_DATA_TYPES.xsd_datetime: //try to see if it will convert to the corresponding schema datatype DateTime dtToday = new DateTime(); dtToday = (DateTime)DateTime.Today; attValue = dtToday.ToString("yyyy-MM-dd"); break; case XSD_DATA_TYPES.xsd_decimal: attValue = "0"; Decimal dDataType = Convert.ToDecimal(attValue); attValue = dDataType.ToString("f2"); break; case XSD_DATA_TYPES.xsd_double: attValue = "0"; double dbDataType = Convert.ToDouble(attValue); //maximum reasonable precision in this network attValue = dbDataType.ToString("N4"); break; case XSD_DATA_TYPES.xsd_int: attValue = "0"; break; case XSD_DATA_TYPES.xsd_float: attValue = "0"; float fDataType = Convert.ToSingle(attValue); //maximum reasonable precision in this network attValue = fDataType.ToString("N4"); break; case XSD_DATA_TYPES.xsd_short: attValue = "0"; break; case XSD_DATA_TYPES.xsd_unsignedbyte: attValue = "0"; break; default: break; } }
private static XSD_DATA_TYPES GetXSDDataType(string dataType) { XSD_DATA_TYPES eDataType = XSD_DATA_TYPES.none; switch (dataType) { case "long": eDataType = XSD_DATA_TYPES.xsd_long; break; case "bool": eDataType = XSD_DATA_TYPES.xsd_boolean; break; case "boolean": eDataType = XSD_DATA_TYPES.xsd_boolean; break; case "string": eDataType = XSD_DATA_TYPES.xsd_string; break; case "datetime": eDataType = XSD_DATA_TYPES.xsd_datetime; break; case "date": eDataType = XSD_DATA_TYPES.xsd_datetime; break; case "decimal": eDataType = XSD_DATA_TYPES.xsd_decimal; break; case "money": eDataType = XSD_DATA_TYPES.xsd_decimal; break; case "double": eDataType = XSD_DATA_TYPES.xsd_double; break; case "int": eDataType = XSD_DATA_TYPES.xsd_int; break; case "integer": eDataType = XSD_DATA_TYPES.xsd_int; break; case "float": eDataType = XSD_DATA_TYPES.xsd_float; break; case "real": eDataType = XSD_DATA_TYPES.xsd_float; break; case "short": eDataType = XSD_DATA_TYPES.xsd_short; break; case "unsignedbyte": eDataType = XSD_DATA_TYPES.xsd_unsignedbyte; break; case "xml": eDataType = XSD_DATA_TYPES.xsd_xml; break; default: break; } return(eDataType); }
public static void ValidateXSDInput( string attName, ref string attValue, string dataType, string size) { XSD_DATA_TYPES eDataType = GetXSDDataType(dataType.ToLower()); //prevent empty data submissions if (attValue == string.Empty || attValue == null) { attValue = "0"; } if (string.IsNullOrEmpty(size)) { size = NAME_SIZE; } switch (eDataType) { case XSD_DATA_TYPES.xsd_long: long lResult = Helpers.GeneralHelpers.ConvertStringToLong(attValue); attValue = lResult.ToString(); break; case XSD_DATA_TYPES.xsd_boolean: //1==true and 0==false - only values that should be passed to db if (attValue != "1" && attValue != "0") { attValue = "0"; } break; case XSD_DATA_TYPES.xsd_string: //these rules are ok for mathexpression int iSize = (size == string.Empty || size == null) ? 0 : Helpers.GeneralHelpers.ConvertStringToInt(size); //don't allow database string size limitations to be exceeded if (attValue.Length > iSize) { int iRemove = attValue.Length - iSize; attValue = attValue.Remove(iSize, iRemove); } //validate names and labels ValidateNameStrings(attName, ref attValue); ValidateSpecialAttributes(attName, ref attValue); break; case XSD_DATA_TYPES.xsd_datetime: DateTime dtDataType = Helpers.GeneralHelpers.ConvertStringToDate(attValue); attValue = dtDataType.ToString("yyyy-MM-dd"); break; case XSD_DATA_TYPES.xsd_decimal: //check for illegal price chars //refactor: needs regex that replaces nonnumeric except period attValue = Replace("$", attValue); attValue = Replace(",", attValue); Decimal dDataType = Helpers.GeneralHelpers.ConvertStringToDecimal(attValue); attValue = dDataType.ToString("N4"); break; case XSD_DATA_TYPES.xsd_double: double dbDataType = Helpers.GeneralHelpers.ConvertStringToDouble(attValue); //maximum reasonable precision for storage of db field data attValue = dbDataType.ToString("N4"); break; case XSD_DATA_TYPES.xsd_int: int iDataType = Helpers.GeneralHelpers.ConvertStringToInt(attValue); attValue = iDataType.ToString(); break; case XSD_DATA_TYPES.xsd_float: float fDataType = Helpers.GeneralHelpers.ConvertStringToFloat(attValue); //maximum reasonable precision for storage of db field data attValue = fDataType.ToString("N4"); break; case XSD_DATA_TYPES.xsd_short: short shDataType = Helpers.GeneralHelpers.ConvertStringToShort(attValue); attValue = shDataType.ToString(); break; case XSD_DATA_TYPES.xsd_unsignedbyte: try { byte btDataType = Convert.ToByte(attValue); } catch { //won't convert correctly when adding to db; do the conversion manually ConvertToXSDDataType(eDataType, ref attValue); } break; default: break; } }