.NET紧凑型框架和SQL Server Express 2008 R2



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

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

我很难在数据库中插入字母ŠDerČĆžšdjčćž。我得到一个PlatformNotSupported异常。

CE设备上的可用区域设置没有列出克罗地亚语或任何类似的内容。当我选择SQL_Latin1_General_CP1_CI_AS作为数据库/表/列排序规则时,它可以工作(与设备上的英语(US)区域设置相结合,但我不能插入以前的字母。

同样的排序规则,使用Management studio 2008,从Windows 7台式电脑上,正确地接受了所有这些字母。

我做错了什么?

我无法在较旧的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;
}

输入和输出都是相同的。

你确定你没有在做别的事情吗?

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

最新更新