【问题标题】:.NET compact framework and SQL Server Express 2008 R2.NET 紧凑型框架和 SQL Server Express 2008 R2
【发布时间】:2012-08-20 17:15:48
【问题描述】:

我在 Windows Embedded Compact Edition 6.0 设备上选择正确的排序规则/区域设置时遇到问题。

我在所述设备上使用 .NET compact framework 2.0。

在数据库中插入字母 ŠĐČĆŽšđčćž 时遇到困难。 我收到 PlatformNotSupported 异常。

CE 设备上的可用语言环境未列出克罗地亚语或类似语言。 当我选择 SQL_Latin1_General_CP1_CI_AS 作为数据库/表/列排序规则时,它可以工作(结合设备上的英语(美国)区域设置,但我无法插入以前的字母。

使用 Management studio 2008 来自 Windows 7 桌面 PC 的相同排序规则正确地接受所有这些字母。

我做错了什么?

【问题讨论】:

  • 您可能遇到了 .NET Compact Framework 的限制。如果我没记错的话,它不支持所有语言。有没有办法在你的数据库中指定 UTF8 字符,或者你已经尝试过了?我会为你整理一些东西,但是一旦我们意识到我们所有的设备都能够直接与主 SQL 服务器通信,我们的 SQL CE 项目就结束了。
  • 我没有使用 SQL CE。数据库是 SQL express 2008。问题是排序规则和获取紧凑框架区域设置以匹配 db 排序规则。

标签: compact-framework windows-ce sql-server-2008r2-express


【解决方案1】:

我无法在我们较旧的 SQL 2000 Server 上复制这一点,我当然希望 SQL Express 2008 在处理多语言问题方面比 SQL 2000 更多。

我使用以下代码作为测试:

private const string jp2code = "jp2code.net";

private void Form1_Activated(object sender, EventArgs e) {
  string croatianIn = "ŠĐČĆŽšđčćž";
  string croatianOut = TestCroatian(croatianIn);
  Console.WriteLine(String.Compare(croatianIn, croatianOut));
}

private string TestCroatian(string input) {
  string result = null;
  string sql = "INSERT INTO SUITEMSG (MsgFrom, [Message]) VALUES (@MsgFrom, @Message);";
  using (SqlCommand cmd = new SqlCommand(sql, Data.Connection)) {
    cmd.Parameters.Add("@MsgFrom", jp2code);
    cmd.Parameters.Add("@Message", input);
    cmd.Connection.Open();
    cmd.ExecuteNonQuery();
  }
  sql = "SELECT [Message] FROM SUITEMSG WHERE MsgFrom=@MsgFrom;";
  using (SqlCommand cmd = new SqlCommand(sql, Data.Connection)) {
    cmd.Parameters.Add("@MsgFrom", jp2code);
    cmd.Connection.Open();
    result = cmd.ExecuteScalar().ToString();
  }
  return result;
}

输入和输出都是一样的。

你确定你没有做其他事情吗?

您能否更新您的问题以发布一个简短的代码示例,就像我在上面所做的那样来展示什么不起作用?

【讨论】:

  • 您能检查一下您的 CE 设备的语言环境吗?我相信这就是问题所在。另外,您的数据库的排序规则是什么?我会尽快给你一个样品。我没有使用参数,而是用代码编写查询。将尽快检查。
  • 我在 Windows Mobile 设备上,但我不得不猜测一切仍然设置为英文;我没有更改任何内容,因为它来自设备上的 Mobile SDK。使用在a blog post 上找到的技术,我能够看到我的服务器的排序规则设置为SQL_Latin1_General_CP1_CI_AS
  • 这是使它工作的正确排序规则SQL_Latin1_General_CP1_CI_AS
猜你喜欢
  • 2010-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-21
  • 1970-01-01
  • 2011-02-26
相关资源
最近更新 更多