C# Windows窗体中的数据库数据类型及其等价项
我在论坛上读到过一些人在从网站和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
decimal
、float
和datetime
数据类型
例如,My DB Table,Orders表由以下列组成。每列下面是我选择使用的数据类型:
UserId OrderId OrderDate InvoiceTotal PaymentStatus DeliveryStatus
int int datetime money bit bit
我的问题是:
DateTime.Now()
等同于DateTime
(在WebMatrix DB中)?若否,原因为何?对于WebMatrix DB中使用的datetime
数据类型,哪种方法最适合money
数据类型:据我所知,Windows窗体中没有“money”数据类型。您只能使用Decimal
(这很有道理),但我听说有人也使用Float
?那么,我应该在WinForms中使用哪种数据类型,以便它能够与数据库中的money
数据类型正常工作,以及如何使用我问这些问题是因为在过去我总是有精度问题。有时甚至会出现不准确的问题。我看过文件了。教程。文章等,但我觉得我遗漏了什么…首先,最好澄清一些困惑:
DateTime.Now
时,您讨论的是基类库中的类型,而不是Windows窗体DateTime
可以与DateTime
一起使用,但是Sql Server无法处理异常的日期范围(例如<01/01/1753)。我无法想象很多情况下你需要做的比这少,但值得一提基类库中没有货币
数据类型,兼容的.NET数据类型是十进制
。Decimal是一种固定精度的数据类型,这意味着所有值都可以用一个范围来表示和存储,而Float
是一种近似的数字数据类型,容易出现精度问题
这两种方法都有争议,出于准确性和性能的原因,这取决于应用程序的设计目的。这个问题可能已经在另一个线程中得到了回答:我会避免在SQL中使用
money
类型,而是使用十进制(p,s)
,并指定所需的精度和比例<代码>货币< /代码>有奇怪的舍入规则(它循环到4个小数点,即使在较长的计算的中间),它可以在最奇怪的时候攻击。