Member 13689209 Ответов: 1

Как написать инструкцию SQL update для richtextbox?


Hello all. Am new to VB.Net and seeking some assistance. With some help from the internet, I managed to save a richtext document to SQL server and then access for viewing. 

How do I write an update statement to save it back to SQL? 

Thanks in advance.


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

Dim cmd As New SqlCommand("Select richtext from tablename", con)

       Try
           rtbdoc.SaveFile("Test.rtf")
           Dim Stream = New FileStream("Test.rtf", FileMode.Append, FileAccess.ReadWrite)
           Dim size As Integer = Convert.ToInt32(Stream.Length)
               Dim rtf As [Byte]() = New [Byte](size - 1) {}
               Stream.Read(rtf, 0, size)

               Dim paramRTF As New SqlParameter("@rtf", SqlDbType.VarBinary, rtf.Length, ParameterDirection.Input, False, 0, 0, Nothing, DataRowVersion.Current, rtf)

          cmd.CommandText = "Update table SET firstname = '" & txtfirstname.Text & "', lastname = '" & txtlastname.Text & "' richtext = @rtf where id = @id"

           If con.State = ConnectionState.Open Then con.Close()
           con.Open()

           cmd.Parameters.Add("@id", SqlDbType.Int).Value = txtid.Text
           cmd.Parameters.Add(paramRTF)
           'cmd.ExecuteNonQuery(
           cmd.ExecuteNonQuery()

           MessageBox.Show("File Updated Successfully")
           clear()
       Catch ex As Exception
           MsgBox("Error updating record!", MsgBoxStyle.Critical)
           clear()
       Finally
           If Stream.Null IsNot Nothing Then
               Stream.Null.Close()
           End If
       End Try

1 Ответов

Рейтинг:
0

Patrice T

Я не понимаю, вы строите SQL-запросы, подлежащие инъекции, но вы знаете, как защитить их с помощью параметров:

cmd.CommandText = "Update table SET firstname = '" & txtfirstname.Text & "', lastname = '" & txtlastname.Text & "' richtext = @rtf where id = @id"

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


Member 13689209

Спасибо за ваш ответ. Ценю ваши отзывы. Однако, как я уже сказал, Я новичок в этом деле. Это мой первый самостоятельный прикладной проект после окончания университета, и я учусь по ходу дела.

Я придумал, как ее решить. Сохранит ссылки для дальнейшего использования.

Спасибо снова.