【发布时间】:2012-08-22 09:45:29
【问题描述】:
最近我决定搬到另一台服务器。现在我的应用程序运行在具有不同文化(IT 和 EN)的不同服务器上。
一切正常,但现在我在日期和数字方面遇到了很多问题。
主要问题似乎是 SQL Server。事实上,SQL SERVER 会抛出错误。 我使用 ParseExact 方法解决了日期问题:
e.Command.Parameters["@Expiry"].Value =
DateTime.ParseExact("31/12/2099", "dd/MM/yyyy", null);
对于十进制数,我必须交换“。”和“,”(取决于文化)如果我想让应用程序工作:
Latitude.Value = Latitude.Value.Replace(".", ","); //ONLY for ITALIAN CULTURE
e.Command.Parameters["@Latitude"].Value = Latitude.Value;
我再说一遍:错误是由 SqlServer 生成的。 有没有办法一劳永逸地设置文化?
PS:EN 服务器是 GoDaddy Hosting。
更新: 问题是纯 Sql Server。 事实上,检查我的服务器,我在第一个服务器上发现了一个“,”和一个“。”在第二个作为货币和小数的分隔符。我发现: ALTER LOGIN 'MYDBLOGIN' WITH DEFAULT_LANGUAGE = Italian;去吧
通过前面的查询,我能够更改 sql server 上的文化。但是,问题仍然存在。
【问题讨论】:
-
这段代码是否在 CLR 对象中运行?如果没有,我看不出 C# 代码如何“修复” SQL Server 错误。
-
您可以使用 global.asax 设置文化,也可以设置 SQL SERVER Collate
-
您是在 SQL 中将日期存储为 *char 还是日期数据类型之一?
-
问题是纯Sql Server。事实上,检查我的服务器,我在第一个服务器上发现了一个“,”和一个“。”在第二个作为货币和小数的分隔符。我发现:ALTER LOGIN 'MYDBLOGIN' WITH DEFAULT_LANGUAGE = Italian; GO 通过前面的查询,我能够改变 sql server 上的文化。但是,问题仍然存在。
-
@Damien_The_Unbeliever:事实上 c# 也帮不上忙。
标签: c# sql-server datetime decimal culture