Я новичок здесь, и мне нужна помощь, чтобы исправить мою проблему с кодом. Мой проект посвящен хранению PDF файлов в базе данных MySQL с использованием кода vb.net. У меня проблема с приведенным ниже кодом, чтобы вылечить это:
Ошибка:
Данный формат пути не поддерживается
и вот мои коды и мои таблицы в базе данных используют MediumBLOB в качестве типа данных
Private Sub btnsave_Click(sender As Object, e As EventArgs) Handles btnsimpan.Click
'codes to save the pdf
Dim filesize As UInt32
Dim rawData() As Byte = IO.File.ReadAllBytes(strFilename)
Dim fs As FileStream
Try
fs = New FileStream("'" & strFilename & "'", FileMode.Open, FileAccess.Read)
filesize = fs.Length
rawData = New Byte(filesize) {}
fs.Read(rawData, 0, filesize)
fs.Close()
conn.Open()
cmd = New MySql.Data.MySqlClient.MySqlCommand("INSERT INTO simpanambilpdf VALUES (NULL, @FileName, @FileSize, @File)", conn)
cmd.Parameters.AddWithValue("@FileName", strFileName)
cmd.Parameters.AddWithValue("@FileSize", filesize)
cmd.Parameters.AddWithValue("@File", rawData)
cmd.ExecuteNonQuery()
MessageBox.Show("Congratulations PDF file is saved!", "HORE", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
conn.Close()
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Пожалуйста, предложите мне ответ или совет. Спасибо
Я больше не могу этого терпеть, поэтому я просто хочу предоставить код:
Private Sub btnsave_Click(sender As Object, e As EventArgs) Handles btnsimpan.Click
'codes to save the pdf
Dim rawData() As Byte = IO.File.ReadAllBytes(strFilename)
Dim filesize As UInt32 = rawData.Length
Try
conn.Open()
cmd = New MySql.Data.MySqlClient.MySqlCommand("INSERT INTO simpanambilpdf VALUES (NULL, @FileName, @FileSize, @File)", conn)
cmd.Parameters.AddWithValue("@FileName", strFileName)
cmd.Parameters.AddWithValue("@FileSize", filesize)
cmd.Parameters.AddWithValue("@File", rawData)
cmd.ExecuteNonQuery()
MessageBox.Show("Congratulations PDF file is saved!", "HORE", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
conn.Close()
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Именно это я и говорил. Я не запускаю код, но, насколько я вижу, он должен делать именно то, что вы хотите. Если он не объяснит, ТОЧНО, что происходит, и мы можем обратиться к этому конкретно. Разговор о NullReferenceException
снова и снова, даже не говоря о том, где он брошен, имеет мало значения.
Тем не менее, если вы получите NullReferenceException
первое, что нужно сделать, это определить, какая ссылка является нулевой и работать назад, чтобы увидеть, где вы ожидали, что она будет установлена, а затем выяснить, почему она либо не была установлена, либо была очищена после этого. Что там, где приходит отладка. Если вы не знаете, как отлаживать, то есть задавать точки останова и проходить через код, тогда узнайте сейчас, начиная здесь. Кроме того, ознакомьтесь с этой NullReferenceExceptions
чтобы узнать о работе с NullReferenceExceptions
.
Filestream
или File.ReadAllBytes
о которых вы говорите, и об NullRefferenceException
, где именно он находится. Рад узнать что-то новое от вас :)
FileSteam
и сохранении в базе данных? Заметьте, как вы этого не делаете при вызовеReadAllBytes
и (я предполагаю) это работает там? Когда вы когда-нибудь видели имя файла / путь, заключенный в одинарные кавычки?FileStream
? У вас есть содержимое файла вByte
массиве, так зачем вам нуженFileStream
чтобы получить длину? Даже если вы не можете получить это значение из массиваByte
, классFileInfo
имеет свойствоLength
, которое даст вам его без повторного открытия файла.