Я ищу для загрузки PDF из моей программы VB.Net на SQL Server. У меня есть код ниже.VB.net SQL Server Загрузить PDF
Файл, который мне нужно загрузить, должен войти в столбец uDoc, а путь к файлу (C: \ example.pdf) - это строка inDoc.
любые идеи о том, как заполнить мой код.
Благодаря Роб
Sub UploadInvoice()
Dim myConn As SqlConnection
Dim inAcc As String
Dim inType As String
Dim inDoc As String
inAcc = Form1.tb1Account.Text
inType = frmInv.cbType.Text
inDoc = frmInv.tbFile.Text
myConn = New SqlConnection(strConnection)
myConn.Open()
Dim mycmd As New SqlCommand
mycmd.CommandText = "INSERT INTO tblInvoice (UDate, AccNo, Type, UDoc) VALUES(GETDATE(),'" & inAcc & "','" & inType & "','" & inDoc & "')"
mycmd.Connection = myConn
mycmd.ExecuteNonQuery()
myConn.Close()
End Sub
У вас есть широко открытая уязвимость в SQL-инъекции. Вы можете исправить это, используя «параметризованные запросы» вместо того, чтобы прямо конкатенировать такие строки. Это также поможет вам исправить вашу проблему, потому что тогда вы можете преобразовать двоичный файл в 'byte []' и назначить его параметру. Который будет * намного проще, чем положить 'byte []' непосредственно в строку запроса. – David
Спасибо за отзыв о «параметризованных запросах», однако приложение используется только одним человеком в закрытой сети, но я буду считать это в середине в будущем. Как только я изменил его, как добавить файл байта? – Lickrob
Это не меняет того факта, что оно уязвимо. И особенно это не изменяет тот факт, что он рекламирует небезопасную практику кодирования как «приемлемую», которая может нанести гораздо больший ущерб, чем это приложение. Также есть информация о том, как использовать параметризованные запросы - это точно, как делать то, что вы пытаетесь сделать ... Например, ответ здесь показывает, как использовать массив байтов в качестве параметра запроса: http://stackoverflow.com/ вопросы/4057748/сохранить байт-в-а-SQL-сервера базы данных из-с-диез – David