Вставка double в таблицу с помощью SQL и C#
Во-первых, ты пишешь запросы руками, так делать нежелательно, лучше использовать Entity Framework. Во-вторых, если пишешь запросы, то пиши их с параметрами, как здесь.
Это на будущее, программу ты всё равно пишешь/правишь единоразово.
У тебя region пустой и колонка должна _RESULT называться? Ошибка говорит об этом (нет такой колонки). Также, попробуй воспользоваться отладчиком и посмотреть, какой в итоге у тебя вызывается SQL, вопросов сразу станет меньше.
Это на будущее, программу ты всё равно пишешь/правишь единоразово.
У тебя region пустой и колонка должна _RESULT называться? Ошибка говорит об этом (нет такой колонки). Также, попробуй воспользоваться отладчиком и посмотреть, какой в итоге у тебя вызывается SQL, вопросов сразу станет меньше.
Нет, регион - часть названия таблицы. И до присоединения дополнительного столбца код работал совсем без использования названий столбцов.
Итоговая таблица в зависимости от региона будет иметь название UK_RESULT или FR_RESULT.
Параметр не пустой, просто часть кода, в которой его задаю, я заменила многоточием.
Итоговая таблица в зависимости от региона будет иметь название UK_RESULT или FR_RESULT.
Параметр не пустой, просто часть кода, в которой его задаю, я заменила многоточием.
Так какой скл-код в итоге выполнился?
Первый, там, где всего один столбец. Второй - мои попытки придать в работающий алгоритм заполнение столбика дополнительных величин.
Ну если внимательно посмотреть, то колонка там у тебя тоже одна, так что ошибка вполне закономерная.
О... А как можно исправить это? То есть придать колонку.
Немного не понимаю, откуда ясно, что была всего одна? Откуда видно количество колонок? Ведь значения я вставляю через запятую.
Немного не понимаю, откуда ясно, что была всего одна? Откуда видно количество колонок? Ведь значения я вставляю через запятую.
Кому чего придать? Ну впиши какое-нибудь название колонки и посмотри, что выйдет 

Вообще не то ты говоришь, , она там имена полей в запросе вообще не указывает.
Автору, сделай вот как:
А потом запости сюда, как заполнена переменная request.
Автору, сделай вот как:
string request="INSERT INTO [" + REGION + "_RESULT] VALUES ('" + CODE[j] + "')";
Console.WriteLine(request); // или как угодно еще сохрани строку запроса
cmd = new SqlCommand(request, conn);
А потом запости сюда, как заполнена переменная request.
ТС разобралась уже, что надо было писать INSERT INTO tablename (column_name,…) values (…).
Да, было такое дело, отвык выполнять работу отладчика в уме.
Да, было такое дело, отвык выполнять работу отладчика в уме.

Издеваются над девушкой в этой конторе. , ты хоть потребуй прибавки к зарплате за вредность 

конечно, надо писать в скобках названия колонок. если порядок колонок в таблице строго не совпадает с порядком вставляемых значений.это вам подтвердит еще 1 девушка-программист 

ЭЭЭ
для каждой пары code, value заново создается sqlCmd? (судя по отрывкам кода).
для каждой пары code, value заново создается sqlCmd? (судя по отрывкам кода).
трагедия белой эмиграции 

Вновь прошу помощи. Раньше код работал, но сейчас перестал, хотя не менялась ни таблица, ни код. Что тут не так?
cmd = new SqlCommand("INSERT INTO [" + REGION + "_RESULT] (CODE, VAL) VALUES ('" + CODE[j] + "', " + VAL[j] + ")", conn);
Получаю
There are fewer columns in the INSERT statement than values specified in the VALUES clause.
cmd = new SqlCommand("INSERT INTO [" + REGION + "_RESULT] (CODE, VAL) VALUES ('" + CODE[j] + "', " + VAL[j] + ")", conn);
Получаю
There are fewer columns in the INSERT statement than values specified in the VALUES clause.
Вновь прошу помощи. Раньше код работал, но сейчас перестал, хотя не менялась ни таблица, ни код. Что тут не так?Формат числа с запятой. Вообще запросы в SQL лучше писать с ? внутри, а потом проставлять параметры. Вот примерно как это делается, в документацию лень залезать:
.... "INSERT INTO TABLE (CODE, VAL) VALUES(?, ?)" ....
var parameter = cmd.CreateParameter;
parameter.Value = CODE[j];
cmd.Parameters.Add(parameter);
....
Поясни, пожалуйта, что за формат, как его правильно дать в таблицу?
Поясни, пожалуйта, что за формат, как его правильно дать в таблицу?Напиши:
double d = 1111.555;
Console.Out.WriteLine("" + d);
У тебя на компьютере, на котором "не работает" стоит русская локализация, и при сложении строки с double вместо точки ставится запятая. Поэтому запрос в базу не работает. Я тебе написал, как лучше сделать, чтобы везде работало, замени в запросе все числа на ?, и добавь их параметрами.
Вероятно, ты столкнулась с легким SQL injection. Представь себе, что значение VAL[j] равно 12.4.
Если программа работает в английской системе, то (12.4).ToString = "12.4"
Если же в русской, то (12.4).ToString = "12,4"
Получается, что во втором случае у тебя как бы три аргумента у VALUES:
INSERT ... VALUES ('xxx',12,4)
Вот на это и жалуется SQL Server: колонок перечислено две, а значений - три.
"правильное" решение этой проблемы - не формировать строку SQL запроса самой, а оформлять параметры SQL-запроса как SqlParameter.
Если программа работает в английской системе, то (12.4).ToString = "12.4"
Если же в русской, то (12.4).ToString = "12,4"
Получается, что во втором случае у тебя как бы три аргумента у VALUES:
INSERT ... VALUES ('xxx',12,4)
Вот на это и жалуется SQL Server: колонок перечислено две, а значений - три.
"правильное" решение этой проблемы - не формировать строку SQL запроса самой, а оформлять параметры SQL-запроса как SqlParameter.
P.S. Та же проблема у тебя будет, если строка CODE будет содержать кавычки. Вот что будет, если написать
?
CODE[j] = "',0); DROP TABLE Clients;"
?

ты бы сразу написал, как 

cmd = new SqlCommand("INSERT INTO [" + REGION + "_RESULT] VALUES (@param1, ...)", conn);
...
cmd.Parameters.AddWithValue("@param1", value1);
cmd.ExecuteНеПомнюЧто;
А вообще, не надо ее учить - справляясь с нашей помощью с заданиями она убеждает руководство использовать ее вместо того, чтоб нанять нормального программиста, а ей заниматься своим делом
Ну а вдруг ей это нравится? Она пытается расти над собой, учится программировать, так сказать, методом погружения.
И вообще, девушкам-программистам положено помогать и всячески их любить
И вообще, девушкам-программистам положено помогать и всячески их любить

слушай, тебе тут вроде несколько раз говорили, чтобы ты не сторила запросы путем конкатенации строк. Так писать НЕЛЬЗЯ. Заботай уже именованные/неименованные параметры.
Я думаю, там у них все иначе. Есть уже готовый работающий говнокод, который, в силу самой своей сути, плохо поддерживаем и всячески убог. Время от времени он начинает глючить, или к нему появляются новые небольшие требования.
Нанимать программиста начальство не хочет, т.к. очень уж задача маленькая. Вот и ставят задачу: сделай, чтобы работало. Вот она и сидит, колбасит код помаленьку
Ни о каком рефакторинге говнокода речи не идет - иначе бы наняли программиста. Надо за 15 минут доработать программу напильником. Насколько этот подход достоин - не мне судить, не зная ситуации. Но отвечать на такие простые вопросы, помогать решать такие простые проблемы - иногда приятно, мозг отдыхает
Нанимать программиста начальство не хочет, т.к. очень уж задача маленькая. Вот и ставят задачу: сделай, чтобы работало. Вот она и сидит, колбасит код помаленьку

Ни о каком рефакторинге говнокода речи не идет - иначе бы наняли программиста. Надо за 15 минут доработать программу напильником. Насколько этот подход достоин - не мне судить, не зная ситуации. Но отвечать на такие простые вопросы, помогать решать такие простые проблемы - иногда приятно, мозг отдыхает

ага, а потом после N маленьких изменений появляется большая задача, с которой она заведомо не справится. Таки наймут программиста, которому придется кроме того, что задачу делать еще и переписывать много всего. И даже не потому, что ему код скажем не нравится, а потому, что она много чего сделала совсем неправильно/испортила - вспомним первый ее вопрос в разделе про смену типа колонки. Ну подумаешь, данные запорола...
А насчет "может нравится" - если б нравилось, давно бы уже книжку любую прочитала, или хотя бы спросила, что почитать. Ну а ответить на простой вопрос - почему нет. Просто у нее это в тенденцию превращается, и именно поэтому считаю, что это плохо (для нее)
А насчет "может нравится" - если б нравилось, давно бы уже книжку любую прочитала, или хотя бы спросила, что почитать. Ну а ответить на простой вопрос - почему нет. Просто у нее это в тенденцию превращается, и именно поэтому считаю, что это плохо (для нее)
ага, а потом после N маленьких изменений появляется большая задача, с которой она заведомо не справится. Таки наймут программиста, которому придется кроме того, что задачу делать еще и переписывать много всего. И даже не потому, что ему код скажем не нравится, а потому, что она много чего сделала совсем неправильно/испортила - вспомним первый ее вопрос в разделе про смену типа колонки. Ну подумаешь, данные запорола...Полностью согласен. Но это все претензии к начальству, а не к самой .
А насчет "может нравится" - если б нравилось, давно бы уже книжку любую прочитала, или хотя бы спросила, что почитать. Ну а ответить на простой вопрос - почему нет. Просто у нее это в тенденцию превращается, и именно поэтому считаю, что это плохо (для нее)Верно подмечено, вряд ли ей нравится программировать. Скорее, хочет как можно скорее и как можно меньшей кровью решить задачу и вернуться к чему-то более понятному и интересному.
Однако я не перестану отвечать на вопросы в этом форуме, и, думаю, не я один

предполагаю, что база была тестовая.
не наезжайте на девушку, все когда-то начинают.
когда отвечаете на вопросы, кидайте еще ссылку на книгу или страничку мсдн, где это можно прочитать.
а автору советую искать ответ на других форумах, там как-то подоброжелательнее народ.
не наезжайте на девушку, все когда-то начинают.
когда отвечаете на вопросы, кидайте еще ссылку на книгу или страничку мсдн, где это можно прочитать.
а автору советую искать ответ на других форумах, там как-то подоброжелательнее народ.
ну, во-первых я не наезжал на нее - наоборот. Она сама писала, что основное ее направление - аналитика. Ну вот пусть ей и занимается, а начальству пусть скажет, что раз есть такие задачи, надо нанять спеца. А если хочет в программирование - кто ж против. Я работал с девушками-программистками, претензий к ним не больше чем к остальным. Но пусть научится, а не лезет делать сама не разобравшись, а потом, что не получилось спрашивать (судя по вопросам, учиться она не пыталась, а так разумеется правильнее делать самому сначала)
Насчет тестовой/не тестовой базы - да разницы нет в принципе. Вопрос в подходе. Ей надо было вытянуть данные в нужном формате, но она вбила себе в голову, что надо поменять тип данных в таблице. Тут у нее не получилось, но легко поверю, что были случаи, когда это получалось - иначе бы не настаивала на подходе.
Насчет других форумов
Тут к ней относятся более чем доброжелательно
Возьмем, скажем, sql.ru. Сначала ее бы туда-сюда пинали, ибо она не знает с какими системами работает и тд. Пусть в итоге попала бы в MSSQL - там есть такой модер Glory. Умнейший мужик, кучу полезных статей написал. Но вот он не любит тупые вопросы и думать за автора, что ему нужно, ну и довольно резко отвечает. За попытки натолкнуть людей на путь истинный (чтоб человек разобрался и задал вопрос по существу) его новички просто ненавидят. Не раз встречал темы с обсуждением "что за мудак"
Насчет тестовой/не тестовой базы - да разницы нет в принципе. Вопрос в подходе. Ей надо было вытянуть данные в нужном формате, но она вбила себе в голову, что надо поменять тип данных в таблице. Тут у нее не получилось, но легко поверю, что были случаи, когда это получалось - иначе бы не настаивала на подходе.
Насчет других форумов
Тут к ней относятся более чем доброжелательно
Возьмем, скажем, sql.ru. Сначала ее бы туда-сюда пинали, ибо она не знает с какими системами работает и тд. Пусть в итоге попала бы в MSSQL - там есть такой модер Glory. Умнейший мужик, кучу полезных статей написал. Но вот он не любит тупые вопросы и думать за автора, что ему нужно, ну и довольно резко отвечает. За попытки натолкнуть людей на путь истинный (чтоб человек разобрался и задал вопрос по существу) его новички просто ненавидят. Не раз встречал темы с обсуждением "что за мудак"Оставить комментарий
maximovega
Подскажите, пожалуйста, что делаю не совсем корректно?В наличии имелся код, создающий таблицу с одним-единственным столбцом
string REGION;
List<string> CODE = new List<string>
...
cmd = new SqlCommand("INSERT INTO [" + REGION + "_RESULT] VALUES ('" + CODE[j] + "')", conn);
Мне хочется добавить соответствующее значение к каждому CODE, и я меняю его следуюшим образом
string REGION;
List<string> CODE = new List<string>
List<double> VAL = new List<double>
...
cmd = new SqlCommand("INSERT INTO [" + REGION + "_RESULT] VALUES ('" + CODE[j] + "', " + VAL[j] + ")", conn);
Ошибка, которую получаю на выходе: Column names or number of supplied values do not match the table definition.
В базе данных нужный столбец нужного типа добавить удалось, но в чем тогда несоответствие?