Windows窗体中的数据库数据类型及其等价物

本文关键字:等价物 数据类型 数据库 窗体 Windows | 更新日期: 2023-09-27 17:59:05

我在论坛上读到一些人在从他们的网站windows窗体应用程序访问数据库时,对某些数据类型有问题。主要是decimalfloatdatetime数据类型。

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

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数据类型一起工作,以及如何使用呢?

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

Windows窗体中的数据库数据类型及其等价物

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

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

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

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

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

对于您的具体问题:

  1. 在大多数情况下,DateTime可以与datetime一起使用,但是Sql Server无法处理特殊的日期范围(例如<01/01/1753)。我无法想象在很多情况下你需要少走一步,但值得注意的是。

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

出于准确性和性能的原因,两者都有使用的理由,这取决于应用程序的设计目的