sixxkilur Ответов: 1

Vb.net VIS2017 и SQLite изображения из БД в поле картинка с чтения данных.


Привет всем, я пытался добавить некоторые функции БД в одно из моих приложений, но мне не очень повезло. Пожалуйста, имейте в виду, что не используйте набор данных с помощью считывателя данных.
Я перепробовал много способов, чтобы получить мои данные из БД в форму windows в поле изображения. Я хочу, чтобы изображение было помещено в поле изображения в зависимости от того, какой элемент выбран в поле со списком. У меня также возникают проблемы с загрузкой других значений в текстовые строки в зависимости от того, какой элемент в БД выбран в поле со списком; см. код. Код имеет много попыток изображения из базы данных SQLite в picture box.

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

#Region "Data Test"
 
    Dim aidlink As String

    Const CONNECTION_STR As String = "Data Source=a2w;Version=3;"

    Private Sub ReadData()

        Dim objConn As SQLiteConnection
        Dim objCommand As SQLiteCommand
        Dim objReader As SQLiteDataReader

        Try

            objConn = New SQLiteConnection(CONNECTION_STR)
            objConn.Open()

            objCommand = objConn.CreateCommand()
            objCommand.CommandText = "SELECT [id],[aname] ,[fname] ,[slink] ,[aimg] From [apps] ORDER BY aname" ' "SELECT * FROM apps ORDER BY aname" 

            objReader = objCommand.ExecuteReader()

            ComboBox1.Items.Clear()
            While (objReader.Read())
                ComboBox1.Items.Add(objReader("aname"))

                Dim bytaimg(objReader.GetBytes(1, 0, Nothing, 0, Integer.MaxValue) - 1) As Byte 'returns error "Specified cast is not valid"
                objReader.GetBytes(1, 0, bytaimg, 0, bytaimg.Length)
                Dim stmaimg As New MemoryStream(bytaimg)
                PictureBox1.Image = Image.FromStream(stmaimg)
                PictureBox2.Image = CType((objReader("aimg")), Image)




                Dim aid = ("steam://rungameid/" & (objReader("slink"))) ', String)
                aidlink = aid
                Dim tid = (objReader("slink"))

                Me.Text = CType(Application.ProductName & " " & "v" & Application.ProductVersion & " " & "App ID:" & " " & tid, String)

            End While

        Catch ex As Exception
            MessageBox.Show("An error has occurred: " & ex.Message)

        Finally

            If Not IsNothing(objConn) Then
                objConn.Close()
            End If
        End Try
        objConn.Close()
    End Sub

#End Region

Richard MacCutchan

Большая часть вашего кода закомментирована. Пожалуйста, опубликуйте фактический код, который не работает, и добавляйте комментарии только в том месте, где возникают ошибки.

sixxkilur

Спасибо за быстрый ответ, я обновил пост, чтобы быть чище.

1 Ответов

Рейтинг:
0

Richard MacCutchan

Видеть SqliteDataReader.Метод GetBytes[^].


sixxkilur

Как бы я реализовал это в своем коде?

Richard MacCutchan

Посмотрите документацию, чтобы увидеть, что такое каждый параметр и какое значение ему нужно, чтобы создать массив байтов для извлекаемых данных.

sixxkilur

Я не имею ни малейшего понятия; я не очень хорошо разбираюсь в руководствах MS и Technet, мне больше повезло понять то, что я могу раскопать на форумах. Но вот уже больше недели мне никак не удавалось решить тот вопрос, который у меня есть. все, что я знаю, это то, что я хочу загрузить Blob
или изображение, которое находится в базе данных, и поместите его в графические поля в зависимости от того, какой элемент выбран в поле со списком. Глядя на все это и сосредоточиться на байтовые массивы, я все-таки проиграл. <url>https://msdn.microsoft.com/en-us/library/system.byte(v=vs. 110).aspx?cs-save-lang=1&cs-lang=vb#code-snippet-1 в последних двух примерах я не вижу, как эти средства будут работать в моем примере кода.

Richard MacCutchan

Извините, но это не возможно, чтобы научить вас основам VB.NET в ОК. Если вы не понимаете разницы между Byte и Byte[] тогда я предлагаю найти хорошую книгу или учебник.