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

news2024/11/14 16:54:47

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

目录

  • 1、C#与Sql Server
    • 1.1、对应关系
    • 1.2、关系代码
  • 2、C#与Mysql
    • 2.1、对应关系
    • 2.2、关系代码
  • 3、C#与Oracle
    • 3.1、对应关系
    • 3.2、关系代码
  • 4、SqlDbType数据类型枚举
    • 4.1、如下图片
    • 4.2、代码如下
  • 5、总结

1、C#与Sql Server

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、C#与Mysql

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、C#与Oracle

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!
🍎🍎简介:一只喜欢全栈方向的程序员,专注基础和实战分享,欢迎咨询,尽绵薄之力答疑解惑!

4、SqlDbType数据类型枚举

在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
#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数据库一般都是两者配合使用,只有在第三方插件或者维护其他项目时才会用到。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/659497.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JAVA-MAVEN初学者教程(配置、pom.xml、依赖管理等)

目录 认识MAVEN安装&配置MAVENwindows安装MAVENMAVEN的配置本地仓库 localRepository镜像 mirrors代理仓库 respositories代理 proxies IDEA配置MAVEN(一个module) MAVEN生命周期install下载包 模块的pom.xml坐标gav打包方式 package属性值 properti…

2023最全Java面试八股(涵盖所有Java核心面试知识点),立刻收藏

2022已成为过去式,不论这一年好与坏,我们都需要抓住新一年的机会,跳槽涨薪,还是学习提升!先给自己定一个小目标,然后再朝着目标去努力就完事儿了! 为了帮大家节约时间,给大家搞来了2…

9.反射和Lambda表达式

目录 一、反射 1.反射是什么 2.反射操作的四个核心类(都处在java.lang.reflect) 3.在java中获取一个类的class对象一共有三种途径: 4.想通过反射来操作类或者对象,第一步就是要获得该类的class对象。 5.Constructor应用 6.Met…

LabVIEW开发光线追踪可视化分段反射器测试台

LabVIEW开发光线追踪可视化分段反射器测试台 为了满足美国国家航空航天局(NASA)对未来望远镜的要求,新的红外空间天文台将在哈勃太空望远镜使用寿命结束后取代其。作为HST的继任者,詹姆斯韦伯太空望远镜(JWST&#xf…

零基础小白如何快速入门网络安全/Web安全?

前言 网络安全现在是朝阳行业,缺口是很大。不过网络安全行业就是需要技术很多的人达不到企业要求才导致人才缺口大 初级的现在有很多的运维人员转网络安全,初级也会慢慢的卷起来,但是岗位多不用怕,以后各大厂也都会要网络安全人…

scratch lenet(6): feature_map可视化的C语言实现

scratch lenet(6): feature_map可视化的C语言实现 文章目录 scratch lenet(6): feature_map可视化的C语言实现1. 目的2. FeatureMap 的归一化2.1 公式2.2 代码实现2.3 代码调用 3. 可视化结果4. References 1. 目的 将卷积层(Convolution)、下采样层(SubSampling&a…

Linux系统之安装Ward服务器监控工具

Linux系统之安装Ward服务器监控工具 一、Ward介绍1.1 Ward简介1.2 Ward特点 二、本地环境介绍2.1 本地环境规划2.2 本次实践介绍 三、部署java环境3.1 jdk下载地址3.2 解压jdk安装包3.3 复制二进制文件3.4 配置环境编辑3.5 查看java版本 四、下载ward的jar包4.1 下载软件包4.2 …

阿里巴巴内部10w+字总结的Java面试题,全是面试官必问技术

献上熬夜整理最新“10w字总结的Java面试题(附答案)”够你刷! 春招升级打怪拿offer,10w字总结的Java面试题(附答案)够你刷 其包含的内容模块有:基础、JVM、多线程与高并发、Spring、MyBatis、Spr…

APP自动化测试高级定位技巧,我敢打赌你一定不知道

目录 高阶定位-Xpath 包含-contains() XPath 轴 XPath 运算符 AND OR 高阶定位-CSS css selector 定位介绍 css selector 用法 示例 iOS css selector 定位 Toast 识别 Toast 是什么 Toast 定位 Toast 定位 显示等待 使用lambda表达式 总结三种等待方法 高阶定…

Ansible自动化运维工具之playbook剧本编写含lnmp

1.playbook的相关知识 1.1 playbook 的简介 playbook是 一个不同于使用Ansible命令行执行方式的模式,其功能更强大灵活。简单来说,playbook是一个非常简单的配置管理和多主机部署系统,不同于任何已经存在的模式,可作为一个适合部…

【黑马头条】解决P11@EnableDiscoveryClient注解无法导入爆红、bootstrap.yml配置文件图标无法显示成带云朵的小绿叶图标

本期目录 1. 问题描述2. 问题原因3. 解决方法 1. 问题描述 如果按黑马老师给的 heima-leadnews-service 模块的 pom 文件所写的依赖,会发现有 2 个 Bug : 首先,启动类 UserApplication 上的服务发现开关注解 EnableDiscoveryClient 不存在。 …

知识复盘(Session、Mysql、Servlet、Jsp、SSM)

一、会话跟踪技术(Session Tracking) 1.为什么会出现会话机制? 目前主流的通讯方式就是客户端和服务端之间进行通信,而这种通信是通过Http协议实现的,但Http协议本身是无状态的,所以客户端每发送一次请求到服务器都会被当做一个…

windows上的Linux系统WSL2

目录 简介 安装 简介 适用于 Linux 的 Windows 子系统 (WSL) 可让开发人员直接在 Windows 上按原样运行 GNU/Linux 环境(包括大多数命令行工具、实用工具和应用程序),且不会产生传统虚拟机或双启动设置开销,用于快速的多平台验…

Unity UGUI2——Canvas与EventSystem

一、Canvas ​ Canvas 的意思是画布,它是 UGUI 中所有 UI 元素能够被显示的根本,它主要负责渲染自己的所有 UI 子对象 ​ 如果 UI 控件对象不是 Canvas 的子对象,那么控件将不能被渲染 ​ 我们可以通过修改 Canvas 组件上的参数修改渲染方…

[架构之路-214]- UML-类图图解、详解、结构化、本质化讲解

目录 一、什么是类 1.1 概述 1.2 UML中类的表示 1.3 接口 1.4 抽象类 1.5 模板类 二、什么类图 2.1 概述 2.2 类关系 三、UML类图 3.1 结构关系 3.1.1 完全一体:继承关系 (类与类耦合度最高,类与类之间最强的关系) …

空天|谈一谈飞机引擎的应急断离

为什么突然想到这个话题呢?归功于即将到来的材料力学考试。在复习科学出版社出版的苟文选、王安强等编写的《材料力学(1)》第三版第三章的连接键强度校核等内容时,一个例题吸引了我的注意力。 例3-4: 水平力Fg。 强而…

理论实战源码齐飞!架构师社区疯传的SpringSecurity进阶小册真香

安全管理是Java应用开发中无法避免的问题,随着Spring Boot和微服务的流行,Spring Security受到越来越多Java开发者的重视,究其原因,还是沾了微服务的光。作为Spring家族中的一员,其在和Spring家族中的其他产品如SpringBoot、Spring Cloud等进…

Unity UGUI3——三大基础控件

一、Image ​ Image 是图像组件,是 UGUI 中用于显示精灵图片的关键组件 ​ 除了背景图等大图,一般都使用 Image 来显示 UI 中的图片元素 (一)参数介绍 Source Image:图片来源 图片类型必须是“精灵 Sprite”类型 Col…

IBM N系列存储和NetApp FAS之间的对应关系

IBM在很长一段时间都是OEM NetApp的FAS存储作为他的NAS产品线,在IBM叫做Storage N series,就是N系列,在2014年IBM终止了和NetApp之间的OEM关系,目前在市场上的OEM的NetApp存储型号主要是 FAS3000,FAS31和FAS32的中端系…

HTB靶场:简单inject

HTB靶场:简单inject 1、进入靶场,连接vpn后开启靶机 inject 2、nmap扫描一下靶机 nmap -v -A 10.10.11.*扫描后显示服务和端口信息8080和22 3、打开web服务 1)有上传文件功能 简单上传了几个文件(txt,img等 上传过程根据参数简…