| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Разработка под ASP.NET > INSERT double |
| Автор: MoRoZfromT 4.9.2006, 21:21 | ||
Нужно запихать в базу Access'a такую строку
получаю синтаксическую ошибку из-за sentCostTotal. Эта переменная типа double. Насколько я понимаю при подставление параметра в запрос в качестве знака разделения целой и дробной части ставится запятая, в результате чего получается несоответствие количества столбцов и значений. Как решить эту задачу? |
| Автор: marcusmae 4.9.2006, 21:38 | ||||
Предположу, что заключение масок в косые апострофы способно улучшить ситуацию :
если не помогло, то попробуй ещё отправить вещественное число в представлении с мантиссой :
|
| Автор: HalkaR 4.9.2006, 22:01 | ||
Пример из MSDN - посмотри
|
| Автор: marcusmae 4.9.2006, 22:10 |
| согласен с HalkaR : можно сделать параметризованный запрос сначала задав общий вид, а затем подставив нужные параметры. Но не может быть, чтобы без этого нельзя было обойтись! + со всей аккуратностью нужно с uint, VarChar (string) и тому подобными неформатными типами. A double вроде везде double... |
| Автор: mr.DUDA 5.9.2006, 08:26 |
| В SQL Server вещественный тип всегда идёт с точкой, независимо от настроек культуры. А при конвертации double.ToString на клиентской машине может быть подставлена либо точка, либо запятая. Так что либо делаем специальный NumberFormatInfo с NumberDecimalSeparator = "." и передаём его в ToString, либо используем параметризованные запросы. Кстати, параметры можно не обязательно обозначать именами, можно ставить символ "?". |
| Автор: arilou 5.9.2006, 10:02 |
Тут речь об Аксесе, а у него с точностью до наоборот - формат вещественного типа зависит от текущей локали. Так что пользуйтесь параметрическими запросами |
| Автор: MoRoZfromT 6.9.2006, 18:12 | ||
| Чертовщина какая-то. Сделал параметрический запрос, но проблема опять в этом double
Стоит убрать этот параметр @Sum - запрос проходит. Даже если я напрямую присваиваю параметру значение 1.0 не работает запрос. Всегда одно и то же "Syntax error in INSERT INTO statement." Чего же я не так делаю? |
| Автор: marcusmae 6.9.2006, 18:26 | ||
А если f поставить
? Добавлено @ 18:27 + где и как объявлено sentCostTotal? Добавлено @ 18:29 + поставь брейк в catch-е и напиши, что за запрос там в cmd лежит. |
| Автор: MoRoZfromT 7.9.2006, 20:27 |
| c буковкой f не прокатывает. выше в этой же функции double sentCostTotal = 0.0; ставлю брейк, в коммандтексте вижу: INSERT INTO acc_test (userid,filterid,sum) VALUES (@User,@Filter,@Sum) вообще ничего не понимаю. |
| Автор: marcusmae 7.9.2006, 21:07 | ||||||||
ну так, пардон, ты заявляешь тип Float
а присваиваешь double
То есть, что, если сделать
? |
| Автор: MoRoZfromT 8.9.2006, 17:00 | ||
| это я сам потом заметил. не помогает. к тому же я переделал немного. теперь код выглядит так
|
| Автор: mr.DUDA 8.9.2006, 22:03 |
| Может, в самой таблице тип не double а real ? |
| Автор: MoRoZfromT 10.9.2006, 13:21 |
| в таблице тип "Двойное с плавающей точкой" все уже перепробовал |
| Автор: MoRoZfromT 10.9.2006, 18:05 |
| я понял в чем была бага: нельзя называть столбец именем sum - это ключевое слово. последнее предложенное решение выглядит более элегантно. всем спасибо за участие. |