Здравствуйте, vgrigor, Вы писали:
V>Вопрос соответсвенно такой — Как сделать корректное сохранение из форм через Linq для типа varchar() ?
а если ручками из ManagementStudio сделать апдейт с кириллицей — сохраняет?
оффтопик:
имхо, использовать win-1251 на уровне БД — плохо. Рано или поздно словите проблему. Перекодировка может происходить на уровне приложения, на уровне клиента ms sql (в зависимости от региональных настроек), на стороне сервера (опять же в зависимости от региональных настроек).
Лучше использовать юникод.
Зная оракл могу сказать, что там varchar2 тоже может быть юникодным. Т.е. при создании БД просто говорите, что мол varchar2 у меня будет ANSI, а nvarchar2 будет UTF-8. Но можно настроить и наоборот при желании.
В MS SQL я думаю та же история — соот-но можно на уровне БД сделать настройку, чтобы varchar было юникодным и никогда не испытывать проблем.
всю ночь не ем, весь день не сплю — устаю
Re[2]: Сохраняется текст с неправильной кодировкой
N>имхо, использовать win-1251 на уровне БД — плохо. Рано или поздно словите проблему. Перекодировка может происходить на уровне приложения, на уровне клиента ms sql (в зависимости от региональных настроек), на стороне сервера (опять же в зависимости от региональных настроек). N>Лучше использовать юникод.
N>Зная оракл могу сказать, что там varchar2 тоже может быть юникодным. Т.е. при создании БД просто говорите, что мол varchar2 у меня будет ANSI, а nvarchar2 будет UTF-8. Но можно настроить и наоборот при желании. N>В MS SQL я думаю та же история — соот-но можно на уровне БД сделать настройку, чтобы varchar было юникодным и никогда не испытывать проблем.
Интересно конечно, но таких механизмов в SQL server я не знаю.
Как правило берется готовая структура которая используется много где,
и к ней генерится новое приложение,
поэтому важно корректно сохранять именно то что вводится.
Что еще интересное, если я ввожу значение через комбобоксы где значения взятые из базы на русском,
то все сохраняется корректно,
а вот если через text-edit то некорректно.
Винтовку добудешь в бою!
Re[3]: Сохраняется текст с неправильной кодировкой
Здравствуйте, vgrigor, Вы писали:
V>Что еще интересное, если я ввожу значение через комбобоксы где значения взятые из базы на русском, V>то все сохраняется корректно, V>а вот если через text-edit то некорректно.
а, ну значит поля способны хранить кириллицу — это главное.
"через комбобоксы" — это как?
а если из кода сделать update — нормально отображаться будет? попробуйте в двух вариациях — через linq и напрямую SqlCommand.
всю ночь не ем, весь день не сплю — устаю
Re[4]: Сохраняется текст с неправильной кодировкой
V>>Что еще интересное, если я ввожу значение через комбобоксы где значения взятые из базы на русском, V>>то все сохраняется корректно, V>>а вот если через text-edit то некорректно. N>а, ну значит поля способны хранить кириллицу — это главное. N>"через комбобоксы" — это как?
Для обычного поля ASP.NET (4.0 DynamicData http://www.developers.org.ua/archives/jony/2009/07/20/asp-net-dynamic-data/)
сама генерит текстовый контрол, а для FK, — комбобокс, которые заполняет из parent таблицы.
конечно можно вместо этих контролов подставлять и свои, или даже их наборы.
N>а если из кода сделать update — нормально отображаться будет? попробуйте в двух вариациях — через linq и напрямую SqlCommand.
Попробую перехватить операцию update() заодно посмотрю что там в поле лежит.
Винтовку добудешь в бою!
Re[5]: Сохраняется текст с неправильной кодировкой
Здравствуйте, vgrigor, Вы писали:
N>>а если из кода сделать update — нормально отображаться будет? попробуйте в двух вариациях — через linq и напрямую SqlCommand. V>Попробую перехватить операцию update() заодно посмотрю что там в поле лежит.
я имел в виду просто написать:
var cmd = new SqlCommand("update table set name=@name where id=@id",conn);
cmd.Parameters.Add(new SqlParameter("id", тип=int, 1));
cmd.Parameters.Add(new SqlParameter("name", тип=varchar, "мама мыла раму"));
cmd.executenonquesry();
и посмотреть, что получится.
всю ночь не ем, весь день не сплю — устаю
Re[6]: Сохраняется текст с неправильной кодировкой
причем пишет верно если поставить в команде у поля тип Nvarchar, а в базе не менять тип N>cmd.Parameters.Add(new SqlParameter("name", тип=Nvarchar, "мама мыла раму"));
Винтовку добудешь в бою!
Re[7]: Сохраняется текст с неправильной кодировкой
V>причем пишет верно если поставить в команде у поля тип Nvarchar, а в базе не менять тип N>>cmd.Parameters.Add(new SqlParameter("name", тип=Nvarchar, "мама мыла раму"));
еще поправка:
надо еще в базе collation поменять у полей varchar на
COLLATE Cyrillic_General_CI_AS NULL
Винтовку добудешь в бою!
Re[8]: Сохраняется текст с неправильной кодировкой
и еще поправка, (может я не так выразился):
все работает если в дизайнере Linq у поля поставить тип nVarChar, и collation у поля в базе Windows-1251,
а тип поля можно оставить varchar