Windows窗体中的数据库数据类型及其等价物
本文关键字:等价物 数据类型 数据库 窗体 Windows | 更新日期: 2023-09-27 17:59:05
我在论坛上读到一些人在从他们的网站和windows窗体应用程序访问数据库时,对某些数据类型有问题。主要是decimal
、float
和datetime
数据类型。
例如,我的DB表,Orders表由以下列组成。每列下面是我选择使用的数据类型:
UserId OrderId OrderDate InvoiceTotal PaymentStatus DeliveryStatus
int int datetime money bit bit
我的问题是:
(在Windows窗体中)
DateTime.Now()
等同于datetime
(在WebMatrix DB中)吗?如果没有,为什么不呢?哪种方法最适合处理WebMatrix DB中使用的datetime
数据类型?money
数据类型:据我所知,Windows窗体中没有"货币"数据类型。你只能使用Decimal
(这很有道理),但我听说有人也使用Float
?那么,我应该在WinForms中使用哪种数据类型,以便它能正确地与DB中的money
数据类型一起工作,以及如何使用呢?
我之所以问这些问题,是因为过去我总是有精度问题。有时甚至会出现不准确的问题。我看过文件。教程。文章等等。但我觉得我错过了什么。。。
首先,最好清除一些混淆:
-
Windows窗体是一种建立在.NET Framework之上的技术。当您描述
DateTime.Now
时,您讨论的是基类库中的类型,而不是Windows窗体。 -
WebMatrix DB实际上就是Sql Server Compact。
如果你犯了将工具与框架本身混淆的错误,你可能不会通过搜索找到答案。
如果您需要一种将.NET数据类型与Sql数据类型进行比较的方法,那么值得一看MSDN Library页面,它讨论了这一点。
对于您的具体问题:
-
在大多数情况下,
DateTime
可以与datetime
一起使用,但是Sql Server无法处理特殊的日期范围(例如<01/01/1753)。我无法想象在很多情况下你需要少走一步,但值得注意的是。 -
您是对的,基类库中没有
money
数据类型,兼容的.NET数据类型是Decimal
。Decimal是一种固定精度的数据类型,这意味着所有值都可以用一个范围来表示和存储,而Float
是一种近似数字数据类型,可能容易出现精度问题。
出于准确性和性能的原因,两者都有使用的理由,这取决于应用程序的设计目的