Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
 Аватар для vijer
24 / 22 / 9
Регистрация: 23.09.2014
Сообщений: 326

Не могу найти ошибку в параметризированном SQL запросе

19.03.2017, 16:48. Показов 1468. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
//float(C#) - real(SQL)
            //double(C#) - float(SQL)
            foreach (Order order in MyLists.Orders)
            {
 
                cmd = new SqlCommand("Insert Into [Order] Values ('" + order.IDOrder + "', '" + order.NameOrder + "', '"
+  (order.PriceOrder).ToString( CultureInfo.InvariantCulture) + "', '" + order.DateStartOrder.ToString("yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture) + "', '" 
+ order.DateEndOrder.ToString("yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture) + "')", conn); // создаем SQL запрос
                cmd.ExecuteNonQuery(); // выполняем запрос на сервер
                foreach (Details Detail in order.MyDetails)
                {
                    string CheckListGra = string.Empty;
                    string CheckListPlo = string.Empty;
                    for (int i = 0; i < Detail.CheckListGra.Count; i++)
                        if (Detail.CheckListGra[i]) CheckListGra += 1.ToString(); else CheckListGra += 0.ToString();
 
                    for (int i = 0; i < Detail.CheckListPlo.Count; i++)
                        if (Detail.CheckListPlo[i]) CheckListPlo += 1.ToString(); else CheckListPlo += 0.ToString();
 
 
                    string strSQL = @"Insert Into [Detail] Values (@Id_detail ,@NameDetail,@Length,@Width,@Height,@PriceDetail,@PriceFask,@PriceBulk," +
                        "@CountDetail,@StoneID,@Fask,@Plo,@WidthFask,@FaskCoof,@BulkCoof,@PloCoof,@CheckListPLO,@CheckListGRA,@IDOrder)";
                    cmd = new SqlCommand(strSQL, conn);
                    cmd.Parameters.Add("@Id_detail", SqlDbType.Int).Value = Detail.IDDetail;
                    cmd.Parameters.Add("@NameDetail", SqlDbType.VarChar,50).Value = Detail.NameDetail.ToString(CultureInfo.InvariantCulture);
                    cmd.Parameters.Add("@Length", SqlDbType.Float).Value = Detail.Length;
                    cmd.Parameters.Add("@Width", SqlDbType.Float).Value = Detail.Width;
                    cmd.Parameters.Add("@Height", SqlDbType.Float).Value = Detail.Height;
                    cmd.Parameters.Add("@PriceDetail", SqlDbType.Float).Value = Detail.PriceDetail;
                    cmd.Parameters.Add("@PriceFask", SqlDbType.Float).Value = Detail.FascPrice;
                    cmd.Parameters.Add("@PriceBulk", SqlDbType.Float).Value = Detail.PriceBulk;
                    cmd.Parameters.Add("@CountDetail", SqlDbType.Int).Value = Detail.CountDetail;
                    cmd.Parameters.Add("@StoneID", SqlDbType.Int).Value = Detail.Stone.IdStone;
                    cmd.Parameters.Add("@Fask", SqlDbType.Bit).Value = Detail.Fasc;
                    cmd.Parameters.Add("@Plo", SqlDbType.Bit).Value = Detail.PLo;
                    cmd.Parameters.Add("@WidthFask", SqlDbType.Float).Value = Detail.WidthFask;
                    cmd.Parameters.Add("@FaskCoof", SqlDbType.Float).Value = Detail.FascCoof;
                    cmd.Parameters.Add("@BulkCoof", SqlDbType.Float).Value = Detail.BulkCoof;
                    cmd.Parameters.Add("@PloCoof", SqlDbType.Float).Value = Detail.PloCoof;
                    cmd.Parameters.Add("@CheckListPLO", SqlDbType.VarChar,50).Value = CheckListPlo.ToString(CultureInfo.InvariantCulture);
                    cmd.Parameters.Add("@CheckListGRA", SqlDbType.VarChar, 50).Value = CheckListGra.ToString(CultureInfo.InvariantCulture);
                    cmd.Parameters.Add("@IDOrder", SqlDbType.Int).Value = order.IDOrder;
                    cmd.ExecuteNonQuery(); // выполняем запрос на сервер
 
            
                }
       
            }

cmd.ExecuteNonQuery(); (43 строка) возвращает ошибку. параметризированный запрос String or binary data would be truncated. The statement has been terminated.

Насколько я гуглил данная ошибка возникает если в БД пытаются записать или слишком длинное значение или не тот тип данных. Однако у меня все данные нужных типов насколько я вижу...
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.03.2017, 16:48
Ответы с готовыми решениями:

Не работает LIKE в параметризированном запросе
string sSql = string.Format(&quot;SELECT Фамилия, Имя, Отчество, Гражданство, Серия_и_номер_паспорта, Адрес_По_паспорту, Телефон FROM Obsol...

В запросе к базе SQL вызывает ошибку ограничения adapter.Fill(table);
Помогите, пожалуйста, найти ошибку При нажатии на кнопку нужно вывести записи, соответствующие Фамилии сотрудника, введенной в...

Не могу найти ошибку в запросе!
загружаю файл и Одно текстовое поле в бд! все вроде четко переменные выводятся echo uploadFile_soft(); echo $title_mat; ошибка в...

14
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
19.03.2017, 17:01
Цитата Сообщение от vijer Посмотреть сообщение
C#
1
cmd.Parameters.Add("@CheckListGRA", SqlDbType.VarChar, 50).Value = CheckListGra.ToString(CultureInfo.InvariantCulture);
Строка, которая возвращается из CheckListGra.ToString(CultureInfo.InvariantCulture), меньше 50 символов?
0
 Аватар для vijer
24 / 22 / 9
Регистрация: 23.09.2014
Сообщений: 326
19.03.2017, 17:03  [ТС]
kolorotur, Да. И в остальных строковых тоже.
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
19.03.2017, 17:06
vijer, а в таблице у колонки какая длина стоит?
0
 Аватар для vijer
24 / 22 / 9
Регистрация: 23.09.2014
Сообщений: 326
19.03.2017, 17:08  [ТС]
kolorotur, MAX
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
19.03.2017, 17:12
vijer, скопируйте сюда, пожалуйста, модель таблицы.
0
 Аватар для vijer
24 / 22 / 9
Регистрация: 23.09.2014
Сообщений: 326
19.03.2017, 17:18  [ТС]
Кликните здесь для просмотра всего текста
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
19.03.2017, 17:30
vijer, попробуйте при добавлении параметров не указывать длину колонки.
1
 Аватар для vijer
24 / 22 / 9
Регистрация: 23.09.2014
Сообщений: 326
19.03.2017, 17:33  [ТС]
kolorotur, До того как начать указывать длину колонки я её не указывал. Сейчас так-же проверил. Не помогло.
0
907 / 664 / 318
Регистрация: 23.10.2016
Сообщений: 1,543
19.03.2017, 17:50
А если так, то что выведет?
C#
1
2
3
4
5
6
7
8
9
10
        try
        {
            command.ExecuteNonQuery();
        }
        catch
        {
            foreach (SqlParameter p in command.Parameters)
                Console.WriteLine("'" + p.ParameterName + ":'" + p.Value + "'");
            throw;
        }
1
 Аватар для vijer
24 / 22 / 9
Регистрация: 23.09.2014
Сообщений: 326
19.03.2017, 17:56  [ТС]
Кликните здесь для просмотра всего текста
0
907 / 664 / 318
Регистрация: 23.10.2016
Сообщений: 1,543
19.03.2017, 18:04
vijer, я немного не это имел в виду. Попробуйте вот это:
C#
1
2
3
4
5
6
7
8
9
10
11
12
        try
        {
            command.ExecuteNonQuery();
        }
        catch
        {
            var sb = new StringBuilder();
            foreach (SqlParameter p in command.Parameters)
                sb.AppendLine("'" + p.ParameterName + ":'" + p.Value + "'");
            MessageBox.Show(sb.ToString());
            throw;
        }
Должен появиться MessageBox со значениями параметров
1
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
19.03.2017, 18:05
Лучший ответ Сообщение было отмечено vijer как решение

Решение

vijer, попробуйте так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
cmd = new SqlCommand(strSQL, conn);
cmd.Parameters.Add("@Id_detail", SqlDbType.Int).Value = Detail.IDDetail;
cmd.Parameters.Add("@NameDetail", SqlDbType.VarChar,50).Value = DBNull.Value; // Detail.NameDetail.ToString(CultureInfo.InvariantCulture);
cmd.Parameters.Add("@Length", SqlDbType.Float).Value = DBNull.Value; // Detail.Length;
cmd.Parameters.Add("@Width", SqlDbType.Float).Value = DBNull.Value; // Detail.Width;
cmd.Parameters.Add("@Height", SqlDbType.Float).Value = DBNull.Value; // Detail.Height;
cmd.Parameters.Add("@PriceDetail", SqlDbType.Float).Value = DBNull.Value; // Detail.PriceDetail;
cmd.Parameters.Add("@PriceFask", SqlDbType.Float).Value = DBNull.Value; // Detail.FascPrice;
cmd.Parameters.Add("@PriceBulk", SqlDbType.Float).Value = DBNull.Value; // Detail.PriceBulk;
cmd.Parameters.Add("@CountDetail", SqlDbType.Int).Value = DBNull.Value; // Detail.CountDetail;
cmd.Parameters.Add("@StoneID", SqlDbType.Int).Value = DBNull.Value; // Detail.Stone.IdStone;
cmd.Parameters.Add("@Fask", SqlDbType.Bit).Value = DBNull.Value; // Detail.Fasc;
cmd.Parameters.Add("@Plo", SqlDbType.Bit).Value = DBNull.Value; // Detail.PLo;
cmd.Parameters.Add("@WidthFask", SqlDbType.Float).Value = DBNull.Value; // Detail.WidthFask;
cmd.Parameters.Add("@FaskCoof", SqlDbType.Float).Value = DBNull.Value; // Detail.FascCoof;
cmd.Parameters.Add("@BulkCoof", SqlDbType.Float).Value = DBNull.Value; // Detail.BulkCoof;
cmd.Parameters.Add("@PloCoof", SqlDbType.Float).Value = DBNull.Value; // Detail.PloCoof;
cmd.Parameters.Add("@CheckListPLO", SqlDbType.VarChar,50).Value = DBNull.Value; // CheckListPlo.ToString(CultureInfo.InvariantCulture);
cmd.Parameters.Add("@CheckListGRA", SqlDbType.VarChar, 50).Value = DBNull.Value; // CheckListGra.ToString(CultureInfo.InvariantCulture);
cmd.Parameters.Add("@IDOrder", SqlDbType.Int).Value = DBNull.Value; // order.IDOrder;
Так сработает?
Если да, то по одной строчке возвращайте оригинальные значения и пробуйте снова.
Продолжайте до тех пор, пока ошибка снова не появится.
Как только появится, вы будете точно знать, какая из колонок создает проблему.
1
 Аватар для vijer
24 / 22 / 9
Регистрация: 23.09.2014
Сообщений: 326
19.03.2017, 18:11  [ТС]
Кликните здесь для просмотра всего текста
0
 Аватар для vijer
24 / 22 / 9
Регистрация: 23.09.2014
Сообщений: 326
19.03.2017, 19:16  [ТС]
kolorotur, Да я об этом думал. Проверил... строка с "CheckListGRA" ... буду разбираться почему так... скорее всего переполнения символов... что как бы странно.
Вам большое спасибо.
и Вам. TopLayer

Добавлено через 51 минуту
Мдаааа.... супер блин 3 часа потратить на такую Ерунду.... если кому вдруг мало ли станет интересно.
Ситуация заключалась в следующем.. у меня строка подключения имеет вид
C#
1
2
return @"Data Source=(localdb)\MSSQLLocalDB;AttachDbFilename = |DataDirectory|WorkstoneDatabase.mdf;Integrated Security=True;
                        Connect Timeout=30";
При этом когда запускаешь фаил .exe из директории подключается к одной базе.. той которая была на скриншоте и которая лежит в каталоге с .exe файлом.
Однако если запускаешь отладчик то при запуске программы он подключается к базе которая лежит в корне где лежит .sln.
молодец я блин.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.03.2017, 19:16
Помогаю со студенческими работами здесь

Не могу найти ошибку в запросе
делаю запрос: $date = date(&quot;Y-m-d H:i:s&quot;); $query = $bd-&gt;mysqli-&gt;prepare(&quot;SELECT `key` FROM `table` WHERE `login`=? AND...

Не могу найти ошибку синтаксиса SQL
доброго времени суток по данной ссылке https://www.cyberforum.ru/php-database/thread639162.html#a_плюсы%20mysqli скопировал код, который...

Функция VBA Date в SQL запросе выдаёт ошибку
Имеем CurrentDb.Execute (&quot;INSERT INTO таблица_2 ( id_чел, дата, ) VALUES (&quot; &amp; varArray(0, i) &amp; &quot;, #&quot; &amp; Date &amp; &quot;# , true)&quot;) ...

Найти ошибку в запросе
Когда в запросе из java кода есть &quot;where substr(a.name,1,1)='&quot; + letter + &quot;' order by a.name &quot;то в результатах ничего нет (letter - это...

Найти ошибку в запросе
База данных в Access..хотел написать запрос. Смотрел в инете, все в основном пишутся на кнопке, а нужно написать в Инспекторе объектов в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru