Member 12663465 Ответов: 3

Нужна помощь в C# date time insert and update


*/
                con.Open();

cmd = new SqlCommand("INSERT INTO student_details (name, father, mother, surname, phone, email, grno, course, rollno, yearofjoin,state,blood,address,pic)  VALUES  ('" + name.Text + "','" + father.Text + "','" + mother.Text + "','" + surname.Text + "','" + phone.Text + "','" + email.Text + "','" + grno.Text + "','" + course.Text + "','" + rollno.Text + "','" + Convert.ToDateTime(yearofjoin.Text) + "','" + comboBox1sem.Text + "','" + comboBox1blood.Text + "','" + address.Text + "',@pic)", con);
                MemoryStream stream = new MemoryStream();
                pictureBox1.Image.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg);
                byte[] pic = stream.ToArray();
                    cmd.Parameters.AddWithValue("@pic", pic);
                j = cmd.ExecuteNonQuery();



код обновления

cmd = new SqlCommand(@"UPDATE student_details SET  name='" + uname.Text + "',father='" + ufather.Text + "',mother='" + umother.Text + "',surname='" + usurname.Text + "',phone='" + uphone.Text + "',email='" + uemail.Text + "',course='" + ucourse.Text + "',rollno='" + urollno.Text + "',yearofjoin='" + uyearofjoin.Text + "',state='"+comboBox1usem.Text+"',blood='"+comboBox1ublood.Text+"',address='"+uaddress.Text+"',pic=@img where (grno='" + ugrno.Text + "')", con);
                MemoryStream stream = new MemoryStream();
                pictureBox1.Image.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg);
                byte[] pic = stream.ToArray();
                cmd.Parameters.AddWithValue("@img", pic);
                j = cmd.ExecuteNonQuery();

                if (j > 0)
                {
                    MessageBox.Show("Record Updated Successfully...");
                }
                ClearingText();
                con.Close();


Что я уже пробовал:

может ли кто-нибудь переписать код вставки и обновить код для меня

Maciej Los

Никогда не используйте такие команды, как sql, потому что они уязвимы для SqlInjection!

ZurdoDev

Нет.

3 Ответов

Рейтинг:
1

Prabhanjant

Насколько мне известно, вы не можете передать datetime во встроенном запросе, используйте хранимую процедуру, которая лучше всего выполняет сохранение и обновление.


Richard Deeming

Совершенно неправильный. Пока вы используете параметры, вы можете передать любое значение во встроенный запрос, не прибегая к написанию хранимой процедуры.

Рейтинг:
0

Patrice T

cmd = new SqlCommand("INSERT INTO student_details (name, father, mother, surname, phone, email, grno, course, rollno, yearofjoin,state,blood,address,pic)  VALUES  ('" + name.Text + "','" + father.Text + "','" + mother.Text + "','" + surname.Text + "','" + phone.Text + "','" + email.Text + "','" + grno.Text + "','" + course.Text + "','" + rollno.Text + "','" + Convert.ToDateTime(yearofjoin.Text) + "','" + comboBox1sem.Text + "','" + comboBox1blood.Text + "','" + address.Text + "',@pic)", con);

Не решение вашего вопроса, а еще одна проблема, которая у вас есть.
Никогда не создавайте SQL-запрос путем объединения строк. Рано или поздно вы сделаете это с помощью пользовательских вводов, и это откроет дверь уязвимости под названием "SQL injection", она опасна для вашей базы данных и подвержена ошибкам.
Одна кавычка в имени - и ваша программа рухнет. Если пользователь вводит имя типа "Брайан О'Коннер", это может привести к сбою вашего приложения, это уязвимость SQL-инъекции, и сбой-это наименьшая из проблем, вредоносный пользовательский ввод, и он продвигается к командам SQL со всеми учетными данными.
SQL-инъекция-Википедия[^]
SQL-инъекция[^]
Атаки SQL-инъекций на примере[^]
PHP: SQL Injection-руководство пользователя[^]
Шпаргалка по предотвращению инъекций SQL-OWASP[^]


Richard Deeming

В данном случае это почти наверняка является решение вопроса! :)

Patrice T

Согласованный :)

Рейтинг:
0

Karthik_Mahalingam

Форматирование строки sql-запроса уязвимый к SQL-инъекция[^] атаки
всегда использовать Параметризованные запросы для предотвращения атак SQL-инъекций в SQL Server[^]

попробуй вот так

SqlCommand cmd = new SqlCommand("INSERT INTO student_details (name, father, mother, surname, phone, email, grno, course, rollno, yearofjoin,state,blood,address,pic)  VALUES  ( @name, @father, @mother, @surname, @phone, @email, @grno, @course, @rollno, @yearofjoin,@state,@blood,@address,@pic)");
cmd.Parameters.AddWithValue("@name",name.Text);
cmd.Parameters.AddWithValue("@father",father.Text);
cmd.Parameters.AddWithValue("@mother",mother.Text);
cmd.Parameters.AddWithValue("@surname",surname.Text);
cmd.Parameters.AddWithValue("@email",email.Text);
cmd.Parameters.AddWithValue("@grno",grno.Text);
cmd.Parameters.AddWithValue("@course",course.Text);
cmd.Parameters.AddWithValue("@rollno",rollno.Text);
cmd.Parameters.AddWithValue("@yearofjoin",Convert.ToDateTime(yearofjoin.Text));
cmd.Parameters.AddWithValue("@state",comboBox1sem.Text);
cmd.Parameters.AddWithValue("@blood",comboBox1blood.Text);
cmd.Parameters.AddWithValue("@address",address.Text);
cmd.Parameters.AddWithValue("@pic", pic);


использовать значение datetime.Метод Метод Tryparseexact [^] для преобразования даты-времени из известного строкового формата.