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

Тема в разделе ".NET", создана пользователем Real-Mulik, 5 сен 2006.

Статус темы:
Закрыта.
  1. Real-Mulik

    Real-Mulik Гость

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

    Как сформировать запрос для добавления новой записи в таблицу? Думаю надо менять региональные настройки, однако результата это не принесло (я менял их руками через панель управления), можно ли как-то без изменения параметров системы перевести разделитель "," на "."?
    Вот пример кода:
    Код (Text):
    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.
     
  2. mr_ST

    mr_ST Гость

    Юзайте параметры они рулез :unsure:
     
  3. Real-Mulik

    Real-Mulik Гость

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

    Real-Mulik Гость

    Выход из положения:

    Код (Text):
    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);
     
  5. mr_ST

    mr_ST Гость

    Не, это не выход. Это вход в положение раком.

    Пользуйтесь параметрами:
    Код (Text):
    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));
     
  6. Real-Mulik

    Real-Mulik Гость

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

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

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

    mr_ST Гость

    На куй ему перводить, данный в бинарном виде уйдут.

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

    Real-Mulik Гость

    Понял. Спасибо.
     
Загрузка...
Похожие Темы - Дробные числа Sql
  1. areostar
    Ответов:
    0
    Просмотров:
    361
  2. Bisyara
    Ответов:
    0
    Просмотров:
    957
  3. mel
    Ответов:
    3
    Просмотров:
    1.362
  4. GoldenYear
    Ответов:
    0
    Просмотров:
    1.171
  5. Untiy16
    Ответов:
    0
    Просмотров:
    1.369
Статус темы:
Закрыта.

Поделиться этой страницей