Sdolby Ответов: 1

Отображение данных из базы данных в текстовых полях VB.net доступ


Здравствуйте, я пытаюсь отобразить данные из моей базы данных в текстовых полях, которые соответствуют тексту поля со списком, однако безуспешно. Все отображаемые текстовые поля равны 0
Вот код, который у меня уже есть.
Private Sub ComboBox42_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles ComboBox42.SelectedIndexChanged

        dataFile = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Simon\Documents\Visual Studio 2010\Projects\UWOShipTool\UWOShipTool\Ship.mdb"
        connString = dataFile
        myConnection.ConnectionString = connString
        Dim cmd As OleDbCommand = New OleDbCommand("SELECT * FROM [Ships] WHERE [Name] = '" & ComboBox42.Text & "'", myConnection)
        myConnection.Open()
        Dim dr As OleDbDataReader = cmd.ExecuteReader

  
        While dr.Read
            Found = True
            Name = dr("Name")
            Dura = dr("Dura")
            Vertical = dr("Vertical")
            Horizontal = dr("Horizontal")
            Row = dr("Row")
            Turn = dr("Turn")
            Wave = dr("Wave")
            Armor = dr("Armor")
            Cabin = dr("Cabin")
            CannonChambers = dr("Cannon Chambers")
            Cargo = dr("Cargo")
        End While

        TextBox1.Text = Dura
        TextBox2.Text = Vertical
        TextBox3.Text = Horizontal
        TextBox4.Text = Row
        TextBox5.Text = Turn
        TextBox6.Text = Wave
        TextBox7.Text = Armor
        TextBox8.Text = Cabin
        TextBox9.Text = CannonChambers
        TextBox10.Text = Cargo
        TextBox11.Text = Adv
        TextBox12.Text = Trade
        TextBox13.Text = Battle

        myConnection.Close()


Заранее спасибо. :)

CHill60

Когда вы отлаживаете этот код вы действительно входите в цикл While dr.Read? Вы входите в него только один раз?
Подумайте (серьезно) об использовании параметризованных запросов, чтобы избежать риска sql-инъекции и сделать ваши sql-запросы более надежными.
Попробуйте прочитать эту статью - Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]

Sdolby

В этом случае мне не нужно беспокоиться об инъекции. Поскольку нет никакого способа, которым они могут вводить данные, и все это контролируемые входы. Однако, когда я писал этот код, я был совсем новичком в SQL, и теперь я знаю лучше, что я параматериализирую его(и даже почти не пишу в нем VB.net)

1 Ответов

Рейтинг:
7

Ivan_FM

Я думаю, что вы должны попробовать следующее:

Dim DB_Adapter As OleDbDataAdapter = New OleDbDataAdapter("SELECT * FROM [Ships] WHERE [Name] = '" & ComboBox42.Text & "'", myConnection)

Dim dt As DataTable
DB_Adapter.Fill(dt)

For Each dr As DataRow In dt.Rows

' Here what you want to do with the info stored in the "dr" datarow from the select statement of your data base.

Next