Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Windows窗体中的数据库数据类型及其等价项_C#_.net_Sql_Winforms_Types - Fatal编程技术网

C# Windows窗体中的数据库数据类型及其等价项

C# Windows窗体中的数据库数据类型及其等价项,c#,.net,sql,winforms,types,C#,.net,Sql,Winforms,Types,我在论坛上读到过一些人在从网站和windows窗体应用程序访问数据库时遇到某些数据类型的问题。主要是decimal、float和datetime数据类型 例如,My DB Table,Orders表由以下列组成。每列下面是我选择使用的数据类型: UserId OrderId OrderDate InvoiceTotal PaymentStatus DeliveryStatus int int datetime mo

我在论坛上读到过一些人在从网站和windows窗体应用程序访问数据库时遇到某些数据类型的问题。主要是
decimal
float
datetime
数据类型

例如,My DB Table,Orders表由以下列组成。每列下面是我选择使用的数据类型:

UserId     OrderId     OrderDate     InvoiceTotal      PaymentStatus     DeliveryStatus
int        int         datetime      money             bit               bit
我的问题是:

  • 是否(在Windows窗体中)
    DateTime.Now()
    等同于
    DateTime
    (在WebMatrix DB中)?若否,原因为何?对于WebMatrix DB中使用的
    datetime
    数据类型,哪种方法最适合

  • money
    数据类型:据我所知,Windows窗体中没有“money”数据类型。您只能使用
    Decimal
    (这很有道理),但我听说有人也使用
    Float
    ?那么,我应该在WinForms中使用哪种数据类型,以便它能够与数据库中的
    money
    数据类型正常工作,以及如何使用


  • 我问这些问题是因为在过去我总是有精度问题。有时甚至会出现不准确的问题。我看过文件了。教程。文章等,但我觉得我遗漏了什么…

    首先,最好澄清一些困惑:

  • Windows窗体是一种建立在.NET框架之上的技术。当您描述
    DateTime.Now
    时,您讨论的是基类库中的类型,而不是Windows窗体

  • WebMatrix DB实际上是Sql Server Compact

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

    如果您需要一种方法来比较.NET数据类型和Sql数据类型,那么值得一看讨论这个问题的

    关于您的具体问题:

  • 在大多数情况下,
    DateTime
    可以与
    DateTime
    一起使用,但是Sql Server无法处理异常的日期范围(例如<01/01/1753)。我无法想象很多情况下你需要做的比这少,但值得一提

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


  • 这两种方法都有争议,出于准确性和性能的原因,这取决于应用程序的设计目的。

    这个问题可能已经在另一个线程中得到了回答:

    我会避免在SQL中使用
    money
    类型,而是使用
    十进制(p,s)
    ,并指定所需的精度和比例<代码>货币< /代码>有奇怪的舍入规则(它循环到4个小数点,即使在较长的计算的中间),它可以在最奇怪的时候攻击。