Windows表单中的数据库数据类型及其等价物

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Windows表单中的数据库数据类型及其等价物相关的知识,希望对你有一定的参考价值。

我已经在论坛中阅读了有关人们从其网站 Windows Forms应用程序访问数据库时遇到某些数据类型问题的信息。主要是decimalfloatdatetime数据类型。

例如,“我的数据库表”,“订单”表由以下列组成。在每一列下面是我选择使用的数据类型:

UserId     OrderId     OrderDate     InvoiceTotal      PaymentStatus     DeliveryStatus
int        int         datetime      money             bit               bit

我的问题是:

  1. (在Windows窗体中)DateTime.Now()是否等于datetime(在WebMatrix DB中)?如果没有,为什么不呢?哪种方法最适合与WebMatrix DB中使用的datetime数据类型一起使用?

  2. money数据类型:据我所知,Windows窗体中没有“金钱”数据类型。您只能使用Decimal(这很有意义),但是我听说有人也在使用Float吗?因此,我应该在WinForms中使用哪种数据类型,以便它可以与DB中的money数据类型一起正常使用,以及如何?

我问这些问题,因为过去我总是遇到精度问题。有时甚至是不准确的问题。我已经阅读了文档。教程。文章等。但是我觉得我缺少一些东西...

答案

首先,最好清除一些混乱:

  1. Windows Forms是一种基于.NET Framework的技术。描述DateTime.Now时,是在讨论基类库中的类型,而不是Windows窗体。

  2. WebMatrix DB,实际上是Sql Server Compact。

如果您犯了将工具与框架本身混淆的错误,则可能无法通过搜索找到答案。

[如果您需要一种将.NET数据类型与Sql数据类型进行比较的方法,那么值得关注的是MSDN Library Page,它讨论了这一点。

对于您的特定问题:

    在大多数情况下,
  1. DateTime可以与datetime一起使用,但是Sql Server无法处理特殊的日期范围(例如<01/01/1753)。我无法想象许多情况下您将需要做的比这少,但是值得一提。

  2. 您是对的,基类库中没有money数据类型,兼容的.NET数据类型为Decimal。十进制是固定精度的数据类型,这意味着可以使用范围来表示和存储所有值,而Float是近似数字数据类型,可能是容易出现精度问题。

出于准确性和性能方面的原因,都有使用这两种方法的争论,这取决于您的应用程序设计要做什么。

另一答案

此问题可能已在其他线程中回答:How to retrieve .NET type of given StoredProcedure's Parameter in SQL?

以上是关于Windows表单中的数据库数据类型及其等价物的主要内容,如果未能解决你的问题,请参考以下文章

Java中的等价数据类型

软构学习-56-设计规约抽象数据类型(ADT)

邮递员表单数据有效,但原始等价物无效

如何将 Sql 查询转换为 Linq 及其在 Entity Framework Core 中的 Join() 方法的等价物

c++中const是怎么使用的?

Windows 中的 UDP SO_TIMESTAMP