Дробные числа в Ms Sql

  • Автор темы Real-Mulik
  • Дата начала
Статус
Закрыто для дальнейших ответов.
R

Real-Mulik

Гость
#1
Есть БД в MS SQL 2000. В таблице имеются поля типа float. Региональные настройки: Русский.

Как сформировать запрос для добавления новой записи в таблицу? Думаю надо менять региональные настройки, однако результата это не принесло (я менял их руками через панель управления), можно ли как-то без изменения параметров системы перевести разделитель "," на "."?
Вот пример кода:
Код:
SqlCommand cmd = new SqlCommand(
string.Format("INSERT INTO (id, id_exp, id_creet, name, maxRes, midRes, minRes) VALUES ({0},{1},{2},'{3}',{4},{5},{6})",
id,idExp,idCreet,Name,maxRes.ToString("F"),midRes.ToString("F"),minRes.ToString("F")),con);
, где maxRes, midRes, minRes типа float.
 
R

Real-Mulik

Гость
#3
Есть мыслишька бросать число в отделную функцию - переводить в String делать замену с "," на "." и возвращать в тпе String. Но как-то накручено мне кажеться :unsure:
 
R

Real-Mulik

Гость
#4
Выход из положения:

Код:
SqlCommand cmd = new SqlCommand(
string.Format("INSERT INTO shkala (id, id_exp, id_creet, name, maxRes, midRes, minRes) VALUES ({0},{1},{2},{3},{4},{5},{6})",
id,idExp,idCreet,Name,maxRes.ToString().Replace(',', '.'),midRes.ToString().Replace(',', '.'),minRes.ToString().Replace(',', '.')),con);
 
M

mr_ST

Гость
#5
Выход из положения:

Код:
SqlCommand cmd = new SqlCommand(
string.Format("INSERT INTO shkala (id, id_exp, id_creet, name, maxRes, midRes, minRes) VALUES ({0},{1},{2},{3},{4},{5},{6})",
id,idExp,idCreet,Name,maxRes.ToString().Replace(',', '.'),midRes.ToString().Replace(',', '.'),minRes.ToString().Replace(',', '.')),con);
Не, это не выход. Это вход в положение раком.

Пользуйтесь параметрами:
Код:
SqlCommand cmd = new SqlCommand("INSERT INTO shkala (id, id_exp, id_creet, name, maxRes, midRes, minRes) VALUES (@id,@idExp,@idCreet,@Name,@maxRes,@midRes,@minRes)", con);

cmd.Parameters.Add(new SqlParameter("@id", id));
cmd.Parameters.Add(new SqlParameter("@idExp", idExp));
cmd.Parameters.Add(new SqlParameter("@idCreet", idCreet));
cmd.Parameters.Add(new SqlParameter("@Name", Name));
cmd.Parameters.Add(new SqlParameter("@maxRes", maxRes));
cmd.Parameters.Add(new SqlParameter("@midRes", midRes));
cmd.Parameters.Add(new SqlParameter("@minRes", minRes));
 
R

Real-Mulik

Гость
#6
Спасибо. Давно искал пример создания запроса с параметрами. :blink:

Я так понимаю, что
Код:
cmd.Parameters.Add(new SqlParameter("@maxRes", maxRes));
Автоматически переделает форматы с "," на "."? Если нет, то без Replace не обойтись :P

Да и ещё: А чем такой подход лучше?
 
M

mr_ST

Гость
#7
Спасибо. Давно искал пример создания запроса с параметрами. :blink:

Я так понимаю, что
Код:
cmd.Parameters.Add(new SqlParameter("@maxRes", maxRes));
Автоматически переделает форматы с "," на "."? Если нет, то без Replace не обойтись :P
На куй ему перводить, данный в бинарном виде уйдут.

Да и ещё: А чем такой подход лучше?
Так завещал великий Ленин! Не зависит от локали. Защищено от sql injection, если не ошибаюсь. Меньше траффика, меньше преобразований, меньше памяти, код более общий. А с реплэйсами это детский сад, уж извини. И потом, всякие блобы и мемы ты чисто строковой командой не заинсертишь.
 
Статус
Закрыто для дальнейших ответов.