SqlServer数据类型C#SqlDbType对应关系及转换
Posted weifeng123
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SqlServer数据类型C#SqlDbType对应关系及转换相关的知识,希望对你有一定的参考价值。
// 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; }
// 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; }
有如下类型的映射对照: System.Data.SqlClient.SqlDbType System.Data.OleDb.OleDbType System.Data.Odbc.OdbcType System.Data.OracleClient.OracleType Oracle.ManagedDataAccess.ClientOracleDbType 格式: DbType.枚举名(枚举值) = DbType.枚举名(枚举值) 回到顶部 1、与 System.Data.SqlClient.SqlDbType转换 System.Data.SqlClient.SqlDbType.BigInt(0) = System.Data.DbType.Int64(12) System.Data.SqlClient.SqlDbType.Binary(1) = System.Data.DbType.Binary(1) System.Data.SqlClient.SqlDbType.Bit(2) = System.Data.DbType.Boolean(3) System.Data.SqlClient.SqlDbType.Char(3) = System.Data.DbType.AnsiStringFixedLength(22) System.Data.SqlClient.SqlDbType.DateTime(4) = System.Data.DbType.DateTime(6) System.Data.SqlClient.SqlDbType.Decimal(5) = System.Data.DbType.Decimal(7) System.Data.SqlClient.SqlDbType.Float(6) = System.Data.DbType.Double(8) System.Data.SqlClient.SqlDbType.Image(7) = System.Data.DbType.Binary(1) System.Data.SqlClient.SqlDbType.Int(8) = System.Data.DbType.Int32(11) System.Data.SqlClient.SqlDbType.Money(9) = System.Data.DbType.Currency(4) System.Data.SqlClient.SqlDbType.NChar(10) = System.Data.DbType.StringFixedLength(23) System.Data.SqlClient.SqlDbType.NText(11) = System.Data.DbType.String(16) System.Data.SqlClient.SqlDbType.NVarChar(12) = System.Data.DbType.String(16) System.Data.SqlClient.SqlDbType.Real(13) = System.Data.DbType.Single(15) System.Data.SqlClient.SqlDbType.UniqueIdentifier(14) = System.Data.DbType.Guid(9) System.Data.SqlClient.SqlDbType.SmallDateTime(15) = System.Data.DbType.DateTime(6) System.Data.SqlClient.SqlDbType.SmallInt(16) = System.Data.DbType.Int16(10) System.Data.SqlClient.SqlDbType.SmallMoney(17) = System.Data.DbType.Currency(4) System.Data.SqlClient.SqlDbType.Text(18) = System.Data.DbType.AnsiString(0) System.Data.SqlClient.SqlDbType.Timestamp(19) = System.Data.DbType.Binary(1) System.Data.SqlClient.SqlDbType.TinyInt(20) = System.Data.DbType.Byte(2) System.Data.SqlClient.SqlDbType.VarBinary(21) = System.Data.DbType.Binary(1) System.Data.SqlClient.SqlDbType.VarChar(22) = System.Data.DbType.AnsiString(0) System.Data.SqlClient.SqlDbType.Variant(23) = System.Data.DbType.Object(13) System.Data.SqlClient.SqlDbType.Xml(25) = System.Data.DbType.Xml(25) System.Data.SqlClient.SqlDbType.Udt(29) = System.Data.DbType.Object(13) System.Data.SqlClient.SqlDbType.Structured(30) = System.Data.DbType.Object(13) System.Data.SqlClient.SqlDbType.Date(31) = System.Data.DbType.Date(5) System.Data.SqlClient.SqlDbType.Time(32) = System.Data.DbType.Time(17) System.Data.SqlClient.SqlDbType.DateTime2(33) = System.Data.DbType.DateTime2(26) System.Data.SqlClient.SqlDbType.DateTimeOffset(34) = System.Data.DbType.DateTimeOffset(27) 回到顶部 2、与 System.Data.OleDb.OleDbType转换 System.Data.OleDb.OleDbType.Empty(0) = System.Data.DbType.Object(13) System.Data.OleDb.OleDbType.SmallInt(2) = System.Data.DbType.Int16(10) System.Data.OleDb.OleDbType.Integer(3) = System.Data.DbType.Int32(11) System.Data.OleDb.OleDbType.Single(4) = System.Data.DbType.Single(15) System.Data.OleDb.OleDbType.Double(5) = System.Data.DbType.Double(8) System.Data.OleDb.OleDbType.Currency(6) = System.Data.DbType.Currency(4) System.Data.OleDb.OleDbType.Date(7) = System.Data.DbType.DateTime(6) System.Data.OleDb.OleDbType.BSTR(8) = System.Data.DbType.String(16) System.Data.OleDb.OleDbType.IDispatch(9) = System.Data.DbType.Object(13) System.Data.OleDb.OleDbType.Error(10) = System.Data.DbType.Int32(11) System.Data.OleDb.OleDbType.Boolean(11) = System.Data.DbType.Boolean(3) System.Data.OleDb.OleDbType.Variant(12) = System.Data.DbType.Object(13) System.Data.OleDb.OleDbType.IUnknown(13) = System.Data.DbType.Object(13) System.Data.OleDb.OleDbType.Decimal(14) = System.Data.DbType.Decimal(7) System.Data.OleDb.OleDbType.TinyInt(16) = System.Data.DbType.SByte(14) System.Data.OleDb.OleDbType.UnsignedTinyInt(17) = System.Data.DbType.Byte(2) System.Data.OleDb.OleDbType.UnsignedSmallInt(18) = System.Data.DbType.UInt16(18) System.Data.OleDb.OleDbType.UnsignedInt(19) = System.Data.DbType.UInt32(19) System.Data.OleDb.OleDbType.BigInt(20) = System.Data.DbType.Int64(12) System.Data.OleDb.OleDbType.UnsignedBigInt(21) = System.Data.DbType.UInt64(20) System.Data.OleDb.OleDbType.Filetime(64) = System.Data.DbType.DateTime(6) System.Data.OleDb.OleDbType.Guid(72) = System.Data.DbType.Guid(9) System.Data.OleDb.OleDbType.Binary(128) = System.Data.DbType.Binary(1) System.Data.OleDb.OleDbType.Char(129) = System.Data.DbType.AnsiStringFixedLength(22) System.Data.OleDb.OleDbType.WChar(130) = System.Data.DbType.StringFixedLength(23) System.Data.OleDb.OleDbType.Numeric(131) = System.Data.DbType.Decimal(7) System.Data.OleDb.OleDbType.DBDate(133) = System.Data.DbType.Date(5) System.Data.OleDb.OleDbType.DBTime(134) = System.Data.DbType.Time(17) System.Data.OleDb.OleDbType.DBTimeStamp(135) = System.Data.DbType.DateTime(6) System.Data.OleDb.OleDbType.PropVariant(138) = System.Data.DbType.Object(13) System.Data.OleDb.OleDbType.VarNumeric(139) = System.Data.DbType.VarNumeric(21) System.Data.OleDb.OleDbType.VarChar(200) = System.Data.DbType.AnsiString(0) System.Data.OleDb.OleDbType.LongVarChar(201) = System.Data.DbType.AnsiString(0) System.Data.OleDb.OleDbType.VarWChar(202) = System.Data.DbType.String(16) System.Data.OleDb.OleDbType.LongVarWChar(203) = System.Data.DbType.String(16) System.Data.OleDb.OleDbType.VarBinary(204) = System.Data.DbType.Binary(1) System.Data.OleDb.OleDbType.LongVarBinary(205) = System.Data.DbType.Binary(1) 回到顶部 3、与System.Data.Odbc.OdbcType转换 System.Data.Odbc.OdbcType.BigInt(1) = System.Data.DbType.Int64(12) System.Data.Odbc.OdbcType.Binary(2) = System.Data.DbType.Binary(1) System.Data.Odbc.OdbcType.Bit(3) = System.Data.DbType.Boolean(3) System.Data.Odbc.OdbcType.Char(4) = System.Data.DbType.AnsiStringFixedLength(22) System.Data.Odbc.OdbcType.DateTime(5) = System.Data.DbType.DateTime(6) System.Data.Odbc.OdbcType.Decimal(6) = System.Data.DbType.Decimal(7) System.Data.Odbc.OdbcType.Numeric(7) = System.Data.DbType.Decimal(7) System.Data.Odbc.OdbcType.Double(8) = System.Data.DbType.Double(8) System.Data.Odbc.OdbcType.Image(9) = System.Data.DbType.Binary(1) System.Data.Odbc.OdbcType.Int(10) = System.Data.DbType.Int32(11) System.Data.Odbc.OdbcType.NChar(11) = System.Data.DbType.StringFixedLength(23) System.Data.Odbc.OdbcType.NText(12) = System.Data.DbType.String(16) System.Data.Odbc.OdbcType.NVarChar(13) = System.Data.DbType.String(16) System.Data.Odbc.OdbcType.Real(14) = System.Data.DbType.Single(15) System.Data.Odbc.OdbcType.UniqueIdentifier(15) = System.Data.DbType.Guid(9) System.Data.Odbc.OdbcType.SmallDateTime(16) = System.Data.DbType.DateTime(6) System.Data.Odbc.OdbcType.SmallInt(17) = System.Data.DbType.Int16(10) System.Data.Odbc.OdbcType.Text(18) = System.Data.DbType.AnsiString(0) System.Data.Odbc.OdbcType.Timestamp(19) = System.Data.DbType.Binary(1) System.Data.Odbc.OdbcType.TinyInt(20) = System.Data.DbType.Byte(2) System.Data.Odbc.OdbcType.VarBinary(21) = System.Data.DbType.Binary(1) System.Data.Odbc.OdbcType.VarChar(22) = System.Data.DbType.AnsiString(0) System.Data.Odbc.OdbcType.Date(23) = System.Data.DbType.Date(5) System.Data.Odbc.OdbcType.Time(24) = System.Data.DbType.Time(17) 回到顶部 4、与System.Data.OracleClient.OracleType转换 System.Data.OracleClient.OracleType.BFile(1) = System.Data.DbType.Binary(1) System.Data.OracleClient.OracleType.Blob(2) = System.Data.DbType.Binary(1) System.Data.OracleClient.OracleType.Char(3) = System.Data.DbType.AnsiStringFixedLength(22) System.Data.OracleClient.OracleType.Clob(4) = System.Data.DbType.AnsiString(0) System.Data.OracleClient.OracleType.Cursor(5) = System.Data.DbType.Object(13) System.Data.OracleClient.OracleType.DateTime(6) = System.Data.DbType.DateTime(6) System.Data.OracleClient.OracleType.IntervalDayToSecond(7) = System.Data.DbType.Object(13) System.Data.OracleClient.OracleType.IntervalYearToMonth(8) = System.Data.DbType.Int32(11) System.Data.OracleClient.OracleType.LongRaw(9) = System.Data.DbType.Binary(1) System.Data.OracleClient.OracleType.LongVarChar(10) = System.Data.DbType.AnsiString(0) System.Data.OracleClient.OracleType.NChar(11) = System.Data.DbType.StringFixedLength(23) System.Data.OracleClient.OracleType.NClob(12) = System.Data.DbType.String(16) System.Data.OracleClient.OracleType.Number(13) = System.Data.DbType.VarNumeric(21) System.Data.OracleClient.OracleType.NVarChar(14) = System.Data.DbType.String(16) System.Data.OracleClient.OracleType.Raw(15) = System.Data.DbType.Binary(1) System.Data.OracleClient.OracleType.RowId(16) = System.Data.DbType.AnsiString(0) System.Data.OracleClient.OracleType.Timestamp(18) = System.Data.DbType.DateTime(6) System.Data.OracleClient.OracleType.TimestampLocal(19) = System.Data.DbType.DateTime(6) System.Data.OracleClient.OracleType.TimestampWithTZ(20) = System.Data.DbType.DateTime(6) System.Data.OracleClient.OracleType.VarChar(22) = System.Data.DbType.AnsiString(0) System.Data.OracleClient.OracleType.Byte(23) = System.Data.DbType.Byte(2) System.Data.OracleClient.OracleType.UInt16(24) = System.Data.DbType.UInt16(18) System.Data.OracleClient.OracleType.UInt32(25) = System.Data.DbType.UInt32(19) System.Data.OracleClient.OracleType.SByte(26) = System.Data.DbType.SByte(14) System.Data.OracleClient.OracleType.Int16(27) = System.Data.DbType.Int16(10) System.Data.OracleClient.OracleType.Int32(28) = System.Data.DbType.Int32(11) System.Data.OracleClient.OracleType.Float(29) = System.Data.DbType.Single(15) System.Data.OracleClient.OracleType.Double(30) = System.Data.DbType.Double(8) 回到顶部 5、与Oracle.ManagedDataAccess.ClientOracleDbType转换 Oracle.ManagedDataAccess.ClientOracleDbType.BFile = System.Data.DbType.Binary(1) Oracle.ManagedDataAccess.ClientOracleDbType.Blob = 102, Oracle.ManagedDataAccess.ClientOracleDbType.Byte = 103, Oracle.ManagedDataAccess.ClientOracleDbType.Char = 104, Oracle.ManagedDataAccess.ClientOracleDbType.Clob = 105, Oracle.ManagedDataAccess.ClientOracleDbType.Date = 106, Oracle.ManagedDataAccess.ClientOracleDbType.Decimal = 107, Oracle.ManagedDataAccess.ClientOracleDbType.Double = 108, Oracle.ManagedDataAccess.ClientOracleDbType.Long = 109, Oracle.ManagedDataAccess.ClientOracleDbType.LongRaw = 110, Oracle.ManagedDataAccess.ClientOracleDbType.Int16 = 111, Oracle.ManagedDataAccess.ClientOracleDbType.Int32 = 112, Oracle.ManagedDataAccess.ClientOracleDbType.Int64 = 113, Oracle.ManagedDataAccess.ClientOracleDbType.IntervalDS = 114, Oracle.ManagedDataAccess.ClientOracleDbType.IntervalYM = 115, Oracle.ManagedDataAccess.ClientOracleDbType.NClob = 116, Oracle.ManagedDataAccess.ClientOracleDbType.NChar = 117, Oracle.ManagedDataAccess.ClientOracleDbType.NVarchar2 = 119, Oracle.ManagedDataAccess.ClientOracleDbType.Raw = 120, Oracle.ManagedDataAccess.ClientOracleDbType.RefCursor = 121, Oracle.ManagedDataAccess.ClientOracleDbType.Single = 122, Oracle.ManagedDataAccess.ClientOracleDbType.TimeStamp = 123, Oracle.ManagedDataAccess.ClientOracleDbType.TimeStampLTZ = 124, Oracle.ManagedDataAccess.ClientOracleDbType.TimeStampTZ = 125, Oracle.ManagedDataAccess.ClientOracleDbType.Varchar2 = 126, Oracle.ManagedDataAccess.ClientOracleDbType.XmlType = 127, Oracle.ManagedDataAccess.ClientOracleDbType.BinaryDouble = 132, Oracle.ManagedDataAccess.ClientOracleDbType.BinaryFloat = 133, Oracle.ManagedDataAccess.ClientOracleDbType.Boolean = 134,
以上是关于SqlServer数据类型C#SqlDbType对应关系及转换的主要内容,如果未能解决你的问题,请参考以下文章
如何将 SqlDbtype.Money = 0 与 Sql 服务器中的货币字段进行比较
C#/SQL - 程序中的 SqlDbType.Xml 有啥问题?
SqlDbType.Date SQL Server 2005
在为 Date SQL Server 字段添加 DateTime C# 值时,我应该使用 Date 还是 DateTime SqlDbType?