VB.NET> Как вставить изображение с помощью оператора Using и получить его для отображения? - PullRequest
0 голосов
/ 26 сентября 2018

Это код, над которым я работаю, чтобы вставить изображение в базу данных.Я думаю, что нет ничего плохого в первой части.Тем не менее, почему-то этот код работает не так, как предполагалось (изображение не вставлено в базу данных).Я не уверен, связана ли закомментированная часть кода с выполнением или нет.Как я должен развивать это более жизнеспособным способом?Эта команда предназначена для выполнения вместе с сохранением списка введенных данных в базу данных.Любая помощь будет полезна.

    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)

1 Ответ

0 голосов
/ 28 сентября 2018

Я исправил проблему, и это код для нее.Не стесняйтесь проверить это и надеюсь, что это поможет кому-то в будущем:)

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
                    con.Open()
                    cmd.ExecuteNonQuery()
                    MessageBox.Show("Profile has been successfully registered!", "Thank you", MessageBoxButtons.OK)

                End Using
            End Using
        End Using
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...