Windows表单中的数据库数据类型及其等价物
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Windows表单中的数据库数据类型及其等价物相关的知识,希望对你有一定的参考价值。
我已经在论坛中阅读了有关人们从其网站和 Windows Forms应用程序访问数据库时遇到某些数据类型问题的信息。主要是decimal
,float
和datetime
数据类型。
例如,“我的数据库表”,“订单”表由以下列组成。在每一列下面是我选择使用的数据类型:
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 Forms是一种基于.NET Framework的技术。描述
DateTime.Now
时,是在讨论基类库中的类型,而不是Windows窗体。WebMatrix DB,实际上是Sql Server Compact。
如果您犯了将工具与框架本身混淆的错误,则可能无法通过搜索找到答案。
[如果您需要一种将.NET数据类型与Sql数据类型进行比较的方法,那么值得关注的是MSDN Library Page,它讨论了这一点。
对于您的特定问题:
- 在大多数情况下,
DateTime
可以与datetime
一起使用,但是Sql Server无法处理特殊的日期范围(例如<01/01/1753)。我无法想象许多情况下您将需要做的比这少,但是值得一提。您是对的,基类库中没有
money
数据类型,兼容的.NET数据类型为Decimal
。十进制是固定精度的数据类型,这意味着可以使用范围来表示和存储所有值,而Float
是近似数字数据类型,可能是容易出现精度问题。
出于准确性和性能方面的原因,都有使用这两种方法的争论,这取决于您的应用程序设计要做什么。
此问题可能已在其他线程中回答:How to retrieve .NET type of given StoredProcedure's Parameter in SQL?
以上是关于Windows表单中的数据库数据类型及其等价物的主要内容,如果未能解决你的问题,请参考以下文章
如何将 Sql 查询转换为 Linq 及其在 Entity Framework Core 中的 Join() 方法的等价物