文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

【数据类型】C#和Sql Server、Mysql、Oracle等常见数据库的数据类型对应关系

2023-09-01 10:42

关注

🏆🏆这是小5写的第二篇城市领跑者文章,一起为所在城市领跑助力吧!
🏆🏆在实际项目中,不管是用C#后端编程语言也好,还是Java后端编程语言,都可能会用到不同端的数据类型转换和对应关系

目录

1.1、对应关系

在 C# 和 SQL Server 之间,以下是一些最常用的数据类型对应关系:

编号C#数据类型Mssql数据类型
1bigintlong 或 Int64
2intint 或 Int32
3smallintshort 或 Int16
4tinyintbyte 或者 SByte
5decimal或 numericdecimal 或 Decimal
6money 或 smallmoneydecimal 或 Decimal
7floatdouble 或 Double
8realfloat 或 Single
9dateDateTime 或 DateTime2
10datetimeDateTime 或 DateTime2
11datetimeDateTime 或 DateTime2
12datetime2DateTime 或 DateTime2
13datetimeoffsetDateTimeOffset 或 DateTimeOffset
14timeTimeSpan 或 TimeSpan
15char 或 ncharstring 或 String
16varchar 或 nvarcharstring 或 String
17text 或 ntextstring 或 String
18binarybyte[] 或 Byte[]
19varbinarybyte[] 或 Byte[]
20imagebyte[] 或 Byte[]

需要注意的是,这些数据类型对应关系仅适用于大多数情况,具体的实现可能会因需要和其他因素而有所不同。此外,SqlDbType 枚举也提供了一些有用的成员,可用于根据数据库中使用的数据类型限制转换。因此在编写应用程序时请根据实际情况考虑使用哪种数据类型对应关系。

1.2、关系代码

根据上面对应的关系,可以编写如下代码,并非是全部类型转换代码,小伙伴们可以根据自己业务情况补齐

private static string DataTypeMssql(string dType){    string dataType = string.Empty;    if (dType.ToLower() == "int".ToLower())    {        dataType = "int";    }    else if (dType.ToLower() == "varchar".ToLower() || dType.ToLower() == "nvarchar".ToLower()         || dType.ToLower() == "char".ToLower() || dType.ToLower() == "nchar".ToLower()        || dType.ToLower() == "text".ToLower() || dType.ToLower() == "ntext".ToLower())    {        dataType = "string";    }    else if (dType.ToLower() == "bigint".ToLower())    {        dataType = "long";    }    else if (dType.ToLower() == "smallint".ToLower())    {        dataType = "short";    }    else if (dType.ToLower() == "tinyint".ToLower())    {        dataType = "byte";    }    else if (dType.ToLower() == "decimal".ToLower()|| dType.ToLower() == "numeric".ToLower())    {        dataType = "decimal";    }    else if (dType.ToLower() == "money".ToLower() || dType.ToLower() == "smallmoney".ToLower())    {        dataType = "decimal";    }    else if (dType.ToLower() == "float".ToLower())    {        dataType = "double";    }    else if (dType.ToLower() == "real".ToLower())    {        dataType = "float";    }    else if (dType.ToLower() == "date".ToLower() || dType.ToLower() == "datetime".ToLower() || dType.ToLower() == "datetime2".ToLower())    {        dataType = "DateTime";    }    else if (dType.ToLower() == "datetimeoffset".ToLower())    {        dataType = "DateTimeOffset";    }    else if (dType.ToLower() == "time".ToLower())    {        dataType = "TimeSpan";    }    else if (dType.ToLower() == "char".ToLower())    {        dataType = "TimeSpan";    }    else if (dType.ToLower() == "binary".ToLower() || dType.ToLower() == "varbinary".ToLower() || dType.ToLower() == "image".ToLower())    {        dataType = "byte[]";    }    return dataType;}

2.1、对应关系

在 C# 和 Mysql 之间,以下是一些最常用的数据类型对应关系:

编号C#数据类型Mysql数据类型
1bigintlong 或 Int64
2intint 或 Int32
3smallintshort 或 Int16
4tinyintbyte 或者 SByte
5decimal或 numericdecimal 或 Decimal
6floatdouble 或 Double
7doublefloat 或 Single
8dateDateTime 或 DateTime2
9datetimeDateTime 或 DateTime2
10timeTimeSpan 或 TimeSpan
11charstring 或 String
12varcharstring 或 String
13textstring 或 String
14binarybyte[] 或 Byte[]
15varbinarybyte[] 或 Byte[]
16blobbyte[] 或 Byte[]

需要注意的是,在 C# 中,MySQL 的一些数据类型名称与 SQL Server 或 Oracle 等其他数据库不同,需要使用不同的对应关系来匹配这些名称。此外,这些数据类型对应关系仅适用于大多数情况,具体的实现可能会因需要和其他因素而有所不同。因此,在编写应用程序时请根据实际情况考虑使用哪种数据类型对应关系

2.2、关系代码

根据上面对应的关系,可以编写如下代码,并非是全部类型转换代码,小伙伴们可以根据自己业务情况补齐

private static string DataTypeMysql(string dType){    string dataType = string.Empty;    if (dType.ToLower() == "int".ToLower())    {        dataType = "int";    }    else if (dType.ToLower() == "bigint".ToLower())    {        dataType = "long";    }    else if (dType.ToLower() == "smallint".ToLower())    {        dataType = "short";    }    else if (dType.ToLower() == "tinyint".ToLower())    {        dataType = "byte";    }    else if (dType.ToLower() == "decimal".ToLower() || dType.ToLower() == "numeric".ToLower())    {        dataType = "decimal";    }    else if (dType.ToLower() == "float".ToLower())    {        dataType = "double";    }    else if (dType.ToLower() == "double".ToLower())    {        dataType = "float";    }    else if (dType.ToLower() == "date".ToLower() || dType.ToLower() == "datetime".ToLower())    {        dataType = "DateTime";    }    else if (dType.ToLower() == "time".ToLower())    {        dataType = "TimeSpan";    }    else if (dType.ToLower() == "varchar".ToLower() || dType.ToLower() == "char".ToLower() || dType.ToLower() == "text".ToLower())    {        dataType = "string";    }    else if (dType.ToLower() == "binary".ToLower() || dType.ToLower() == "varbinary".ToLower() || dType.ToLower() == "blob".ToLower())    {        dataType = "byte[]";    }    return dataType;}

3.1、对应关系

在 C# 和 Oracle 之间,以下是一些最常用的数据类型对应关系:

编号C#数据类型Mysql数据类型
1bigintlong 或 Int64
2interval year to monthint 或 Int32
3number, int, smallint或 numericdecimal 或 Decimal
4binary_doubledouble 或 Double
5binary_floatfloat 或 Single
6dateDateTime 或 DateTime2
7interval day to secondTimeSpan 或 TimeSpan
8charstring 或 String
9clobstring 或 String
10blobbyte[] 或 Byte[]

3.2、关系代码

private static string DataTypeOracle(string dType){    string dataType = string.Empty;    if (dType.ToLower() == "interval year to month".ToLower())    {        dataType = "int";    }    else if (dType.ToLower() == "bigint".ToLower())    {        dataType = "long";    }    else if (dType.ToLower() == "int".ToLower() || dType.ToLower() == "smallint".ToLower() || dType.ToLower() == "numeric".ToLower())    {        dataType = "decimal";    }    else if (dType.ToLower() == "binary_double".ToLower())    {        dataType = "double";    }    else if (dType.ToLower() == "binary_float".ToLower())    {        dataType = "float";    }    else if (dType.ToLower() == "date".ToLower())    {        dataType = "DateTime";    }    else if (dType.ToLower() == "interval day to second".ToLower())    {        dataType = "TimeSpan";    }    else if (dType.ToLower() == "char".ToLower() || dType.ToLower() == "clob".ToLower() || dType.ToLower() == "blob".ToLower())    {        dataType = "string";    }    return dataType;}

🏆🏆 原则:Write Less Do More!
🍎🍎简介:一只喜欢全栈方向的程序员,专注基础和实战分享,欢迎咨询,尽绵薄之力答疑解惑!

在C#开发语言里,也有一个数据类型枚举

4.1、如下图片

在这里插入图片描述

4.2、代码如下

代码里有数据类型的详细说明,包括一些取值范围

#region 程序集 netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51// C:\Users\15633\.nuget\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\netstandard.dll#endregionnamespace System.Data{    //    // 摘要:    //     Specifies SQL Server-specific data type of a field, property, for use in a System.Data.SqlClient.SqlParameter.    public enum SqlDbType    {        //        // 摘要:        //     System.Int64. A 64-bit signed integer.        BigInt = 0,        //        // 摘要:        //     System.Array of type System.Byte. A fixed-length stream of binary data ranging        //     between 1 and 8,000 bytes.        Binary = 1,        //        // 摘要:        //     System.Boolean. An unsigned numeric value that can be 0, 1, or null.        Bit = 2,        //        // 摘要:        //     System.String. A fixed-length stream of non-Unicode characters ranging between        //     1 and 8,000 characters.        Char = 3,        //        // 摘要:        //     System.DateTime. Date and time data ranging in value from January 1, 1753 to        //     December 31, 9999 to an accuracy of 3.33 milliseconds.        DateTime = 4,        //        // 摘要:        //     System.Decimal. A fixed precision and scale numeric value between -10 38 -1 and        //     10 38 -1.        Decimal = 5,        //        // 摘要:        //     System.Double. A floating point number within the range of -1.79E +308 through        //     1.79E +308.        Float = 6,        //        // 摘要:        //     System.Array of type System.Byte. A variable-length stream of binary data ranging        //     from 0 to 2 31 -1 (or 2,147,483,647) bytes.        Image = 7,        //        // 摘要:        //     System.Int32. A 32-bit signed integer.        Int = 8,        //        // 摘要:        //     System.Decimal. A currency value ranging from -2 63 (or -9,223,372,036,854,775,808)        //     to 2 63 -1 (or +9,223,372,036,854,775,807) with an accuracy to a ten-thousandth        //     of a currency unit.        Money = 9,        //        // 摘要:        //     System.String. A fixed-length stream of Unicode characters ranging between 1        //     and 4,000 characters.        NChar = 10,        //        // 摘要:        //     System.String. A variable-length stream of Unicode data with a maximum length        //     of 2 30 - 1 (or 1,073,741,823) characters.        NText = 11,        //        // 摘要:        //     System.String. A variable-length stream of Unicode characters ranging between        //     1 and 4,000 characters. Implicit conversion fails if the string is greater than        //     4,000 characters. Explicitly set the object when working with strings longer        //     than 4,000 characters. Use System.Data.SqlDbType.NVarChar when the database column        //     is nvarchar(max).        NVarChar = 12,        //        // 摘要:        //     System.Single. A floating point number within the range of -3.40E +38 through        //     3.40E +38.        Real = 13,        //        // 摘要:        //     System.Guid. A globally unique identifier (or GUID).        UniqueIdentifier = 14,        //        // 摘要:        //     System.DateTime. Date and time data ranging in value from January 1, 1900 to        //     June 6, 2079 to an accuracy of one minute.        SmallDateTime = 15,        //        // 摘要:        //     System.Int16. A 16-bit signed integer.        SmallInt = 16,        //        // 摘要:        //     System.Decimal. A currency value ranging from -214,748.3648 to +214,748.3647        //     with an accuracy to a ten-thousandth of a currency unit.        SmallMoney = 17,        //        // 摘要:        //     System.String. A variable-length stream of non-Unicode data with a maximum length        //     of 2 31 -1 (or 2,147,483,647) characters.        Text = 18,        //        // 摘要:        //     System.Array of type System.Byte. Automatically generated binary numbers, which        //     are guaranteed to be unique within a database. timestamp is used typically as        //     a mechanism for version-stamping table rows. The storage size is 8 bytes.        Timestamp = 19,        //        // 摘要:        //     System.Byte. An 8-bit unsigned integer.        TinyInt = 20,        //        // 摘要:        //     System.Array of type System.Byte. A variable-length stream of binary data ranging        //     between 1 and 8,000 bytes. Implicit conversion fails if the byte array is greater        //     than 8,000 bytes. Explicitly set the object when working with byte arrays larger        //     than 8,000 bytes.        VarBinary = 21,        //        // 摘要:        //     System.String. A variable-length stream of non-Unicode characters ranging between        //     1 and 8,000 characters. Use System.Data.SqlDbType.VarChar when the database column        //     is varchar(max).        VarChar = 22,        //        // 摘要:        //     System.Object. A special data type that can contain numeric, string, binary,        //     or date data as well as the SQL Server values Empty and Null, which is assumed        //     if no other type is declared.        Variant = 23,        //        // 摘要:        //     An XML value. Obtain the XML as a string using the System.Data.SqlClient.SqlDataReader.GetValue(System.Int32)        //     method or System.Data.SqlTypes.SqlXml.Value property, or as an System.Xml.XmlReader        //     by calling the System.Data.SqlTypes.SqlXml.CreateReader method.        Xml = 25,        //        // 摘要:        //     A SQL Server user-defined type (UDT).        Udt = 29,        //        // 摘要:        //     A special data type for specifying structured data contained in table-valued        //     parameters.        Structured = 30,        //        // 摘要:        //     Date data ranging in value from January 1,1 AD through December 31, 9999 AD.        Date = 31,        //        // 摘要:        //     Time data based on a 24-hour clock. Time value range is 00:00:00 through 23:59:59.9999999        //     with an accuracy of 100 nanoseconds. Corresponds to a SQL Server time value.        Time = 32,        //        // 摘要:        //     Date and time data. Date value range is from January 1,1 AD through December        //     31, 9999 AD. Time value range is 00:00:00 through 23:59:59.9999999 with an accuracy        //     of 100 nanoseconds.        DateTime2 = 33,        //        // 摘要:        //     Date and time data with time zone awareness. Date value range is from January        //     1,1 AD through December 31, 9999 AD. Time value range is 00:00:00 through 23:59:59.9999999        //     with an accuracy of 100 nanoseconds. Time zone value range is -14:00 through        //     +14:00.        DateTimeOffset = 34    }}

🏆🏆对比不同数据库和C#之间的数据类型,可以发现,大同小异,大部分都是基本一致,有个别类型名称不一样但表示的C#数据类型是一致的。
实际项目中,其实C#与Mssql数据库一般都是两者配合使用,只有在第三方插件或者维护其他项目时才会用到。

来源地址:https://blog.csdn.net/lmy_520/article/details/131271247

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯