Рейтинг:
0
P_Z
> & gt; empnames=@empnames+'" + поле combobox1.Текст
&ГТ;&ГТ; cmd2.Параметры.AddWithValue ("@empnames", Convert.ToString ((comboBox1. Text)));
Вы уже передаете @empnames в качестве параметра (что хорошо), поэтому вам не нужно повторно добавлять его с помощью запроса. As is empname будет сохранен как: "sometext" " sometext"
Но с 1-й строки подумайте о sql-инъекции queries...as вы передаете любой текст в запрос, а не просто параметр.
Кроме того, еще один момент заключается в том, что существует слишком много функций, выполняемых одним методом.
Открывая много соединений, можно повторно использовать одни и те же, но четкие параметры каждый раз
выбирать
обновление
обновление
вставлять
Нет проверки данных на сервере side...so некоторые запросы могут завершиться неудачно, например вставить строку вместо int и т. д.
Boopalslm
что я сейчас делаю, Сэр, пожалуйста, измените мой запрос обновления и пришлите мне сэра.
P_Z
Вы читали / понимали решение? Первая строка просто показывает вам, как это сделать...смотрите зачеркнутый текст, который означает удалить это
Boopalslm
чертой является правильным
empnames=@empnames+'", категории=@категорий, вес=@массой одного=@в,потери=@потерь,поддержки=@поддержки,партия=@вечеринке, где дата=@дата ", con2);
ошибка бур старт на категории=@категорий, как решит сэр
Boopalslm
сэр, просто направьте меня, Сэр, я проведу 4 дня, сэр. но до сих пор я не могу добиться результата.
Рейтинг:
0
Wendelius
Вы смешиваете параметры и литералы, и это вызывает у вас путаницу. Используйте параметры и только параметры в своих заявлениях. Каждый раз, когда вы начинаете писать что-то вроде ..." + ...
в SQL-операторе вы, скорее всего, находитесь на неправильном пути.
Таким образом, обновление должно выглядеть примерно так
SqlCommand cmd2 = new SqlCommand(
@"update sales
set empnames=@empnames,
categories=@categories,
weight=@weight,
per=@per,
wastage=@wastage,
customer=@customer,
party=@party
where date=@date ", con2);
cmd2.Parameters.AddWithValue("@empnames", comboBox1.Text);
cmd2.Parameters.AddWithValue("@categories", Convert.ToString(rows.Cells[1].Value));
cmd2.Parameters.AddWithValue("@weight", Convert.ToString((rows.Cells[2].Value)));
cmd2.Parameters.AddWithValue("@per", Convert.ToDouble(rows.Cells[3].Value));
cmd2.Parameters.AddWithValue("@wastage", Convert.ToString((rows.Cells[4].Value)));
cmd2.Parameters.AddWithValue("@customer", Convert.ToDouble(rows.Cells[5].Value));
cmd2.Parameters.AddWithValue("@party", Convert.ToString((rows.Cells[6].Value)));
cmd2.Parameters.AddWithValue("@date", Convert.ToDouble(rows.Cells[0].Value));
cmd2.ExecuteNonQuery();
Но на этом дело не заканчивается, вы должны исправить все операторы, чтобы использовать параметры.
Кроме того, вы должны
- Откройте соединение только один раз внутри одного метода. Зачем многократно открывать его?
- Используйте блоки using, чтобы убедиться, что объекты расположены правильно.
- Используйте блоки try..catch для правильной обработки исключений.
Я предлагаю прочитать до конца
Правильное выполнение операций с базой данных[
^]
Boopalslm
я изменяю свой код вашей процедуры, но не могу добавить в базу данных вторую строку в тех же empnames, как решить эту ошибку
Boopalslm
сэр, дайте мне несколько идей.
Wendelius
Не совсем понимаю, что ты имеешь в виду. Если вы получаете сообщение об ошибке, пожалуйста, опубликуйте его или некоторые примеры данных для этой проблемы.
Boopalslm
нет ошибки, я привязываю свою предыдущую запись и ввожу вторую строку, но не могу сохранить вторую строку в базе данных.
Wendelius
Какой код вы используете в данный момент?
Boopalslm
над вашим кодом
Wendelius
Это обновляет одну строку, как вы вставляете две строки? У вас все еще есть тот же цикл foreach, что и в коде в вопросе?
Boopalslm
нет, сэр, как использовать цикл foreach в моем запросе обновления.
Wendelius
Я не имею в виду, что вы должны использовать foreach в обновлении. Команды обновления обновляют существующую строку. В опубликованном примере у вас был цикл foreach, в котором вы решали, обновлять ли или вставлять строку. Команда insert страдала от тех же проблем, что и команда update, так что вы уже исправили это?
Кроме того, решение об обновлении или вставке строки было принято с помощью оператора select. Отладили ли вы, работает ли оператор select так, как ожидалось?
Boopalslm
сэр что я могу сделать сэр.
Boopalslm
сэр, если вы не возражаете, полностью измените мой код, сэр. я буду тратить все больше и больше времени, сэр, но не могу получить результат.
Wendelius
Я не могу исправить ваш код. У меня нет ни проекта, ни данных, ни требований, и самое главное, вы бы не учились на нем.
Поэтому вам нужно собрать кусочки вместе, но люди могут помочь вам, если вы попытаетесь и у вас будут хорошие вопросы.
Сказав это, вы в настоящее время, кажется, зацикливаете все строки в gridview. Однако вы принимаете решение об обновлении или вставке на основе выбора поля со списком (comboBox1). Это поле со списком имеет только один выбор, так что, возможно, причина в том, что даже если вы перебираете несколько строк, решение об обновлении всегда одно и то же. Другими словами, логика неверна.
Рейтинг:
0
Patrice T
Никогда не создавайте SQL-запрос с такой конкатенацией:
SqlCommand cmd1 = new SqlCommand("select * from sales where empnames='" + comboBox1.Text + "' ", con1);
Если пользовательский ввод является экзотическим, запрос не будет выполнен, если он является вредоносным, он открывает дверь для SQL-инъекции.
SQL-инъекция[
^]
SQL-инъекция-Википедия[
^]
Boopalslm
так как же изменить мои запросы дать мне некоторые идеи
Patrice T
читать вторую ссылку
Boopalslm
сэр, если вы не возражаете, пожалуйста, выше измените мою команду, потому что я уже провел 4 дня, до сих пор я не могу получить результат.