Рейтинг:
0
Midi_Mick
Вы создаете параметры и добавляете их в объект SQLCommand:
SqlCommand cmd2 = new SqlCommand("update stkdetails set customer=customer+@customer where empname='" + rows.Cells[2].Value + "'and date='" + txtdate.Text + "'", con2);
cmd2.Parameters.AddWithValue("@customer", rows.Cells[7].Value);
Я бы тоже
сильно предлагаю вам настроить параметры для @empname и @date одновременно.
SqlCommand cmd2 = new SqlCommand("update stkdetails set customer=customer+@customer where empname=@empname and date=@date", con2);
cmd2.Parameters.AddWithValue("@customer", rows.Cells[7].Value);
cmd2.Parameters.AddWithValue("@empname", rows.Cells[2].Value);
cmd2.Parameters.AddWithValue("@date", txtDate.Text);
Boopalslm
Я пробую ваш код, но ниже ошибка пришла
Параметризованный запрос '(@customer nvarchar(4000),@empname nvarchar(4000),@date nvarchar' ожидает параметр '@customer', который не был указан.
как решить вышеприведенную ошибку. дайте мне несколько идей
Midi_Mick
Что это за поле-клиент? Это текст или цифра? И что вы к этому добавляете?
Boopalslm
клиент-это имя столбца представления таблицы данных, тип данных float, а ниже приведен мой полный код
foreach (DataGridViewRow rows in dataGridView1. Rows)
{
SqlConnection con1 = new SqlConnection(db. Connectionstring());
вы видите con1.Открыть();
SqlCommand cmd1 = new SqlCommand ("select * from stkdetails where empname='" + rows.Ячейки[2]. Значение + "'", con1);
SqlDataReader dr = cmd1.Метода executereader();
если (dr. HasRows)
{
SqlConnection con2 = new SqlConnection(db. Connectionstring());
con2.Открыть();
Sqlcommand, который cmd2 = новая команда sqlcommand("обновление stkdetails установить клиент=клиент+@поддержки, где столбец empname=@столбец empname и дата=@дата", con2);
cmd2.Параметры.AddWithValue ("@customer", строки.Ячейки[7]. Значение);
cmd2.Параметры.AddWithValue ("@empname", строки.Ячейки[2]. Значение);
cmd2.Параметры.AddWithValue ("@date", txtdate.Текст);
cmd2.Метод executenonquery();
con2.Рядом();
}
ещё
{
SqlConnection con3 = new SqlConnection(db. Connectionstring());
кон3.Открыть();
Sqlcommand, который cmd3 = новая команда sqlcommand("вставить в stkdetails(дата,столбец empname,заказчик)значения('" + txtdate.Текст +"', '" + строки.Ячейки[2]. значение +"', '" + строки.Ячейки[7]. значение + "')", con3);
cmd3.Метод executenonquery();
кон3.Закрывать();
}
}
Midi_Mick
ОК - возможно, вам придется убедиться, что ваш параметр имеет правильный тип:
Попробуйте изменить строку, в которую вы добавляете параметр @customer
cmd2.Параметры.AddWithValue ("@customer", Convert.ToDouble (строки.Ячейки[7]. Значение));
Также стоит настроить запрос в cmd3 как параметризованный, точно так же, как мы только что сделали для cmd2.
Boopalslm
Я изменяю свой код в соответствии с вашим способом, но ниже ошибка пришла
Параметризованного запроса '(@поплавка поддержки,@столбец empname тип nvarchar(4000),@дата тип nvarchar(10))инсэ' ожидает, что параметр '@столбец empname', который не был указан.
Boopalslm
я меняю cmd3 меняю на тот же путь на cmd2 но ниже ошибка пришла
это мой другой части кода
ещё
{
SqlConnection con3 = new SqlConnection(db. Connectionstring());
кон3.Открыть();
Sqlcommand, который cmd3 = новая команда sqlcommand("вставить в stkdetails(заказчик,столбец empname,дата)значения(@клиент@столбец empname,@дата)", управления con3);
cmd3.Параметры.AddWithValue ("@customer", Convert.Метод todouble
(грядки.Ячейки[7]. Значение));
cmd3.Параметры.AddWithValue ("@empname", строки.Ячейки[2]. Значение);
cmd3.Параметры.AddWithValue ("@date", txtdate.Текст);
cmd3.Метод executenonquery();
кон3.Закрывать();
}
но ошибка в том, чтобы дать мне некоторые идеи.
Параметризованного запроса '(@поплавка поддержки,@столбец empname тип nvarchar(4000),@дата тип nvarchar(10))инсэ' ожидает, что параметр '@столбец empname', который не был указан.
Midi_Mick
Хорошо-хорошо, ввод параметра @customer, казалось, сработал, когда он перешел к следующему параметру для отчета. Я заметил, что DataGridViewCell. Value возвращает тип object, поэтому нам может потребоваться привести каждый параметр к его правильному типу. Возможно, лучше перейти к методу Add, а не к AddWithValue. Добавление параметра будет выглядеть примерно так
МВ2.Параметры.Добавить("@поддержки", значения sqldbtype.Плыть).Значение = строки.Ячейки[7]. Значение;
Взгляните сюда https://msdn.microsoft.com/en-us/library/system.data.sqldbtype (v=vs.110). aspx для различных параметров SqlDbType. Существует также необязательный параметр int для размера, если вы используете строки фиксированной длины в своей базе данных.
Boopalslm
я изменю cmd2 в соответствии с вашим кодом
cmd2.Параметры.Добавить("@поддержки", значения sqldbtype.Плыть).Значение = строки.Ячейки[7]. Значение;
но ниже ошибка пришла
Параметризованный запрос' (@customer float,@empname nvarchar(4000),@date nvarchar (10))upda 'ожидает параметр' @customer', который не был указан.
Сэр пожалуйста дайте мне идеи или измените мои общие коды и пришлите мне сэр
Boopalslm
данные прекрасно хранятся в базе данных. пришла только ошибка
Параметризованный запрос' (@customer float,@empname nvarchar(4000),@date nvarchar (10))upda 'ожидает параметр' @customer', который не был указан.
Midi_Mick
Данные попадают в базу данных? Тогда какая строка выдает ошибку?
Мне придется вернуться к этому завтра, извини. Здесь уже почти два часа ночи.
Boopalslm
Сэр, я получил ответ, Спасибо за Вашу поддержку.............