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

这篇具有很好参考价值的文章主要介绍了【数据类型】C#和Sql Server、Mysql、Oracle等常见数据库的数据类型对应关系。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

1、C#与Sql Server

1.1、对应关系

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

编号 C#数据类型 Mssql数据类型
1 bigint long 或 Int64
2 int int 或 Int32
3 smallint short 或 Int16
4 tinyint byte 或者 SByte
5 decimal或 numeric decimal 或 Decimal
6 money 或 smallmoney decimal 或 Decimal
7 float double 或 Double
8 real float 或 Single
9 date DateTime 或 DateTime2
10 datetime DateTime 或 DateTime2
11 datetime DateTime 或 DateTime2
12 datetime2 DateTime 或 DateTime2
13 datetimeoffset DateTimeOffset 或 DateTimeOffset
14 time TimeSpan 或 TimeSpan
15 char 或 nchar string 或 String
16 varchar 或 nvarchar string 或 String
17 text 或 ntext string 或 String
18 binary byte[] 或 Byte[]
19 varbinary byte[] 或 Byte[]
20 image byte[] 或 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、C#与Mysql

2.1、对应关系

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

编号 C#数据类型 Mysql数据类型
1 bigint long 或 Int64
2 int int 或 Int32
3 smallint short 或 Int16
4 tinyint byte 或者 SByte
5 decimal或 numeric decimal 或 Decimal
6 float double 或 Double
7 double float 或 Single
8 date DateTime 或 DateTime2
9 datetime DateTime 或 DateTime2
10 time TimeSpan 或 TimeSpan
11 char string 或 String
12 varchar string 或 String
13 text string 或 String
14 binary byte[] 或 Byte[]
15 varbinary byte[] 或 Byte[]
16 blob byte[] 或 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、C#与Oracle

3.1、对应关系

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

编号 C#数据类型 Mysql数据类型
1 bigint long 或 Int64
2 interval year to month int 或 Int32
3 number, int, smallint或 numeric decimal 或 Decimal
4 binary_double double 或 Double
5 binary_float float 或 Single
6 date DateTime 或 DateTime2
7 interval day to second TimeSpan 或 TimeSpan
8 char string 或 String
9 clob string 或 String
10 blob byte[] 或 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!
🍎🍎简介:一只喜欢全栈方向的程序员,专注基础和实战分享,欢迎咨询,尽绵薄之力答疑解惑!

4、SqlDbType数据类型枚举

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

4.1、如下图片

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

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
#endregion

namespace 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
    }
}

5、总结

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

到了这里,关于【数据类型】C#和Sql Server、Mysql、Oracle等常见数据库的数据类型对应关系的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Oracle/MySQL/PG/SQL Server关系数据库中NULL与空字符串的区别

    在Oracle数据库中,\\\'\\\'(空字符串)与null是什么关系呢? \\\'\\\'(空字符串)是否会等同(或者说等价于)于null值呢?\\\'\\\'跟\\\' \\\'(长度为零的空字符串或包含一个或多个空格的空字符串)是否又等价?下面我们测试一下 如上所示,插入\\\'\\\'时,Oracle数据库确实将其等同与null,但是, 像\\\'

    2024年02月16日
    浏览(54)
  • 实例讲解C++连接各种数据库,包含SQL Server、MySQL、Oracle、ACCESS、SQLite 和 PostgreSQL、MongoDB 数据库

      C++ 是一种通用的编程语言,可以使用不同的库和驱动程序来连接各种数据库。以下是一些示例代码,演示如何使用 C++ 连接 SQL Server、MySQL、Oracle、ACCESS、SQLite 和 PostgreSQL、MongoDB 数据库。 连接 SQL Server 数据库 要使用 C++ 连接 SQL Server 数据库,可以使用 Microsoft 的 ADODB 库。以

    2024年02月05日
    浏览(55)
  • Sql server 连接 Oracle数据库

    前提预警:本机必须装有Oracle客户端 检查是否安装Oracle客户端,并检查TNS信息是否配置完成 1.1、 在cmd中执行 sqlplus ,没有报错并出现Oracle版本号,则表示Oracle已安装 1.2、配置TNS信息(最上面的10.0.0.130可随意定义,eg:test、orcl、qerghasd…) 配置ODBC数据信息 2.1、打开ODBC数据

    2024年02月03日
    浏览(45)
  • Sql server和Oracle默认数据库

            SQL Server 和 Oracle 都有自带的一些默认数据库,保存了不同的系统信息和配置数据。         SQL Server 上的默认数据库:          master :SQL Server 引擎的系统级目录,存储了 所有系统层级的信息和元数据 ,例如登录账号信息。         tempdb:存储各种系

    2024年02月09日
    浏览(55)
  • DB(一):数据库概述、SQL概述、Oracle数据类型

    包括Oracle、DB2、SQL Server、MySQL数据库概述;数据定义语言DDL、数据操作语言DML、事务控制语言TCL、数据查询语言DQL、数据控制语言DCL语言介绍;NUMBER 、CHAR、VARCHAR2、DATE数据库类型;CHAR和VARCHAR2的存储编码、CHAR和VARCHAR2的最大长度、LONG和CLOB类型。 1、DB和DBMS (1)、数据库(

    2024年02月09日
    浏览(62)
  • SQL SERVER连接oracle数据库几种方法

    --1 方式  --查询oracle数据库中的表  举一反三:在查询分析器中输入: --在sqlserver中创建与oracle数据库中的表同名的表  --2、方式  --在master数据库中查看已经存在的链接服务器  --要在企业管理器内指定登录帐号 --备注:引用ORACLE服务器上的表时,用户名称与表名一定要大写

    2024年02月02日
    浏览(43)
  • SQL Server数据库如何添加Oracle链接服务器(Windows系统)

    官方下载地址:https://www.oracle.com/technetwork/topics/dotnet/downloads/odacdeploy-4242173.html 1.2.1 下载的压缩包解压位置   比如我直接放到D盘根目录 1.2.2 接着用管理员运行Cmd 此处一定要用管理员运行,否则会报错 使用管理员打开终端,运行如下命令: 在系统环境变量中,为Path添加“

    2024年02月14日
    浏览(69)
  • [SQL Server]SQL Server数据库中如何将时间日期类型(DateTime)转换成字符串类型(varchar,nvarchar)

    SQL Server数据库中,如何将时间日期类型(DateTime)的数据转换成字符串类型(varchar,nvarchar),并对其进行 yyyy-mm-dd 形式的格式化输出 使用SQL Server的 CONVERT() 函数,如下: SELECT LEFT(CONVERT(VARCHAR, GETDATE(), 120), 10) 或者 SELECT CONVERT(VARCHAR(10), GETDATE(), 120) 在SQL Server 2012及以上版本中,新增

    2024年02月07日
    浏览(61)
  • mysql数据库常见数据类型

    数据类型: MySQL支持所有标准SQL数值数据类型。 这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似数值数据类型(FLOAT、REAL和DOUBLE PRECISION)。 INT是INTEGER的同义词,DEC是DECIMAL的同义词。 BIT数据类型保存位字段值,并且支持MyISAM、MEMORY、Inn

    2024年02月15日
    浏览(39)
  • 还原Sql Server数据库BAK备份文件的三种方式及常见错误

    这是演示的是Sql Server 2008R2版本,不同版本可能有细微差别 右键点击数据库→还原数据库    在还原的源中选择源设备→点击选择框  在指定备份中点击添加→选择具体文件→确定→确定  勾选用于还原的备份集→这时目标数据库中会自动生成目标数据库名,在此选择即可→

    2023年04月08日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包