Sqlserver中数据类型与C#中数据类型转换


// sql server中的数据类型,转换为C#中的类型类型
public static Type SqlTypeString2CsharpType(string sqlTypeString)
{
  SqlDbType dbTpe = SqlTypeString2SqlType(sqlTypeString);
  return SqlType2CsharpType(dbTpe);
}
// 将sql server中的数据类型,转化为C#中的类型的字符串
public static string SqlTypeString2CsharpTypeString(string sqlTypeString)
{
  Type type = SqlTypeString2CsharpType(sqlTypeString);
  return type.Name;
}

// SqlDbType转换为C#数据类型
public static Type SqlType2CsharpType(SqlDbType sqlType)
{
  switch (sqlType)
  {
    case SqlDbType.BigInt:
      return typeof(Int64);
    case SqlDbType.Binary:
      return typeof(Object);
    case SqlDbType.Bit:
      return typeof(Boolean);
    case SqlDbType.Char:
      return typeof(String);
    case SqlDbType.DateTime:
      return typeof(DateTime);
    case SqlDbType.Decimal:
      return typeof(Decimal);
    case SqlDbType.Float:
      return typeof(Double);
    case SqlDbType.Image:
      return typeof(Object);
    case SqlDbType.Int:
      return typeof(Int32);
    case SqlDbType.Money:
      return typeof(Decimal);
    case SqlDbType.NChar:
      return typeof(String);
    case SqlDbType.NText:
      return typeof(String);
    case SqlDbType.NVarChar:

      return typeof(String);
    case SqlDbType.Real:
      return typeof(Single);
    case SqlDbType.SmallDateTime:
      return typeof(DateTime);
    case SqlDbType.SmallInt:
      return typeof(Int16);
    case SqlDbType.SmallMoney:
      return typeof(Decimal);
    case SqlDbType.Text:
      return typeof(String);
    case SqlDbType.Timestamp:
      return typeof(Object);
    case SqlDbType.TinyInt:
      return typeof(Byte);
    case SqlDbType.Udt://?定义的数据类型
      return typeof(Object);
    case SqlDbType.UniqueIdentifier:
      return typeof(Object);
    case SqlDbType.VarBinary:
      return typeof(Object);
    case SqlDbType.VarChar:
      return typeof(String);
    case SqlDbType.Variant:
      return typeof(Object);
    case SqlDbType.Xml:
      return typeof(Object);
    default:
      return null;
  }
}
 

// sql server数据类型(如:varchar)
// 转换为SqlDbType类型
public static SqlDbType SqlTypeString2SqlType(string sqlTypeString)
{
  SqlDbType dbType = SqlDbType.Variant;//默认为Object
  switch (sqlTypeString)
  {
    case "int":
      dbType = SqlDbType.Int;
      break;
    case "varchar":
      dbType = SqlDbType.VarChar;
      break;
    case "bit":
      dbType = SqlDbType.Bit;
      break;
    case "datetime":
      dbType = SqlDbType.DateTime;
      break;
    case "decimal":
      dbType = SqlDbType.Decimal;
      break;
    case "float":
      dbType = SqlDbType.Float;
      break;
    case "image":
      dbType = SqlDbType.Image;
      break;
    case "money":
      dbType = SqlDbType.Money;
      break;

    case "ntext":
      dbType = SqlDbType.NText;
      break;
    case "nvarchar":
      dbType = SqlDbType.NVarChar;
      break;
    case "smalldatetime":
      dbType = SqlDbType.SmallDateTime;
      break;
    case "smallint":
      dbType = SqlDbType.SmallInt;
      break;
    case "text":
      dbType = SqlDbType.Text;
      break;
    case "bigint":
      dbType = SqlDbType.BigInt;
      break;
    case "binary":
      dbType = SqlDbType.Binary;
      break;
    case "char":
      dbType = SqlDbType.Char;
      break;
    case "nchar":
      dbType = SqlDbType.NChar;
      break;
    case "numeric":
      dbType = SqlDbType.Decimal;
      break;
    case "real":
      dbType = SqlDbType.Real;
      break;

    case "smallmoney":
      dbType = SqlDbType.SmallMoney;
      break;
    case "sql_variant":
      dbType = SqlDbType.Variant;
      break;
    case "timestamp":
      dbType = SqlDbType.Timestamp;
      break;
    case "tinyint":
      dbType = SqlDbType.TinyInt;
      break;
    case "uniqueidentifier":
      dbType = SqlDbType.UniqueIdentifier;
      break;
    case "varbinary":
      dbType = SqlDbType.VarBinary;
      break;
    case "xml":
      dbType = SqlDbType.Xml;
      break;
  }
  return dbType;
}