У нас есть приложение на C # .NET, которое выполняет массовое обновление базы данных SQL Server CE.Мы храним операторы вставки в файлах на нашем сервере.Приложение захватывает их и выполняет.
Все хорошо, за исключением проблемы с локализацией.Как вы знаете, некоторые страны используют период "."в качестве десятичного разделителя, а другие используют запятую ",".
Мы знали, что столкнулись с проблемами локализации, поэтому вместо сохранения десятичного разделителя в виде "," или "."в нашем файле мы сохраняем его как «[d]» и заменяем его соответствующим разделителем перед выполнением SQL.
Соответствующим разделителем является CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator
Таким образом, наш объемный файл SQL содержит строки, которые выглядят следующим образом:
INSERT INTO DefaultTickSize ([ExchangeID],[InstrumentType],[BaseSymbol],[IsVariableTickSize],[TickSize],[TickValue]) VALUES ('NYMEX','FUT','HP','0','0[d]001','1')
Наш код для обработки объемного файла SQL выглядит следующим образом - он выполняет каждую строку, используя метод «DecimalDecode» для вставки правильного разделителя.
foreach (string insertRow in sqlFileHKF)
if (!string.IsNullOrEmpty(insertRow))
using (SqlCeCommand cmd = new SqlCeCommand(JTString.DecimalDecode(insertRow), conn))
{
try
{
RunExecuteNonQuery(cmd);
}
catch (Exception e)
{
}
}
public static string DecimalDecode(string value)
{
return value.Replace("[d]", CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator);
}
И он работает нормально - за исключением некоторых компьютеров, он не,Например, у нас есть один пользователь в Португалии, его разделитель "," и вставки работают нормально.Другой пользователь в Испании, также с разделителем как "," не работает.Вставка 5,5 вставляется как «55».
Это почти как если бы сам SQL Server CE не соблюдал разделитель уровня ОС.
Мы не можем видеть какой-либо шаблон - он просто работает для одних, а не для других.Нам либо нужно как-то заставить SQL Server CE сообщать нам, какой разделитель ему нужен, либо заставлять его использовать тот, который мы отправили, или просто выполнять массовую загрузку другим способом.
Любые мысли