tuscake Ответов: 1

Я не могу открыть файл документа после загрузки из базы данных mysql VB.NET


Private Sub DownloadFile(NewFileLocation As String)
       Try
           NewFileLocation = DirPathName
           Dim id As Integer = Convert.ToInt32(gvFile.CurrentRow.Cells(0).Value.ToString())
           query = "Select * From tbl_login Where Id=@Id"
           cmd = New MySqlCommand(query, conn)
           cmd.Parameters.AddWithValue("@Id", id)
           da = New MySqlDataAdapter(cmd)
           dt = New DataTable("tbl_login")
           dt.Clear()
           da.Fill(dt)

           For Each row As DataRow In dt.Rows
               Dim filebyte As Byte() = row(2)
               Dim fs As New FileStream(NewFileLocation & "\" & row(1), FileMode.Create, FileAccess.Write)
               fs.Write(filebyte, 0, filebyte.Length)
               fs.Close()
           Next
           txtDownloadPath.Clear()
           MessageBox.Show("File Downloaded Successfully", "Download", MessageBoxButtons.OK, MessageBoxIcon.Information)
       Catch ex As Exception
       End Try
   End Sub


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

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

CHill60

Не используйте" Select*", если вы собираетесь ссылаться на столбцы по индексу. Перечислите их имена явно, чтобы вы знали, что 3-й столбец определенно содержит ваш blob-объект.

tuscake

ладно, я попробую. Большое спасибо

1 Ответов

Рейтинг:
2

OriginalGriff

Чтобы добавить к тому, что сказал CHill60, не глотайте исключения!
Когда вы пишете такой код, как этот:

Try
   ...
Catch ex As Exception
End Try
Это будет проблемой.

Во - первых, когда он терпит неудачу, вы не знаете-потому что вы проглотили исключение, пользователь никогда не говорит, что была проблема, и поэтому не говорит вам.
Во - вторых, даже если вы знаете, что этот код не работает должным образом, есть вероятность, что он вызвал исключение-но вы намеренно отбросили всю информацию, которая могла бы рассказать вам, в чем была проблема и почему это произошло!
Пустой блок catch говорит: "Я не знаю, что я делаю: я не хочу ошибок, поэтому я просто проигнорирую их все."
И это Пита для вашего будущего "я": он не получает ничего, чтобы сказать ему, Где или в чем может быть проблема.

Поэтому внутри каждого блока catch регистрируйте информацию об исключении, чтобы вы могли изучить ее позже или, по крайней мере, показать пользователю, что это была проблема и что это было! Он будет очень недоволен вами, если его загрузка сработала нормально, но ваш код выбросил ее из-за ошибки и не сказал ему об этом!