Это код, над которым я работаю, чтобы вставить изображение в базу данных.Я думаю, что нет ничего плохого в первой части.Тем не менее, почему-то этот код работает не так, как предполагалось (изображение не вставлено в базу данных).Я не уверен, связана ли закомментированная часть кода с выполнением или нет.Как я должен развивать это более жизнеспособным способом?Эта команда предназначена для выполнения вместе с сохранением списка введенных данных в базу данных.Любая помощь будет полезна.
Using con As SqlConnection = New SqlConnection("Data Source=LAPTOP-85ALBAVS\SQLEXPRESS;Initial Catalog=Portal;Integrated Security=True")
Using cmd As SqlCommand = New SqlCommand("INSERT INTO Photo (Img, Pid) VALUES (@Img, @Pid)", con)
Using ms As New MemoryStream
pictureBox1.Image.Save(ms, pictureBox1.Image.RawFormat)
cmd.Parameters.Add("@Img", SqlDbType.Image).Value = ms.ToArray()
cmd.Parameters.Add("@Pid", SqlDbType.VarChar).Value = TextBox1.Text
End Using
End Using
End Using
'con.Open()
'If Command.ExecuteNonQuery() = 1 Then
' MessageBox.Show("Profile successfully registered!", "Message", MessageBoxButtons.OK)
'Else
' MessageBox.Show("Failed. Try again.", "Message", MessageBoxButtons.OK)
'End If
'con.Close()
End Sub
Это код, который я использую для извлечения изображения из базы данных и его отображения.Есть глюк с этим кодом.Если не найдено ни одного изображения, связанного с конкретным Pid
, появится сообщение об ошибке 'There is no row at position 0.'
(означает, что изображение не было загружено).Но это не сильно влияет на общее выполнение программы, если изображение успешно загружено вместе с введенными данными вместе, все будет хорошо.
Dim command As New SqlCommand("Select * From Photo Where Pid = @Pid", con)
command.Parameters.Add("@Pid", SqlDbType.VarChar).Value = TextBox1.Text
Dim table As New DataTable()
Dim adapter As New SqlDataAdapter(command)
adapter.Fill(table)
Dim img() As Byte
img = table.Rows(0)(0)
Dim ms As New MemoryStream(img)
pictureBox1.Image = Image.FromStream(ms)