Michael Vergara
Michael Vergara

Reputation: 21

How to show data from MySQL in TextBoxes

I need to show a set of data from MySQL like the function of DataGridView or ListView, but using multiple TextBox controls. The result of my work is that all data from a column is together on one TextBox. I don't know how to make a loop.

Code:

Imports System.Data
Imports MySql.Data.MySqlClient

Public Class Form1

    Dim con As MySqlConnection = New MySqlConnection("data source=localhost; user id=root; database=abc; password=")
    Dim query As String = "SELECT id,timein,timeout FROM emp"

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Using myCommand As New MySqlCommand("SELECT * FROM emp ORDER BY id ASC", con)
            Try
                con.Open()
                Using myData = myCommand.ExecuteReader()
                    If myData.HasRows Then
                        While myData.Read()
                            Dim idline = String.Format("{0}", myData.GetString(myData.GetOrdinal("id")), Environment.NewLine)
                            Dim inline = String.Format("{0}", myData.GetString(myData.GetOrdinal("timein")), Environment.NewLine)
                            Dim outline = String.Format("{0}", myData.GetString(myData.GetOrdinal("timeout")), Environment.NewLine)
                            idbox1.Text &= idline
                            idbox2.Text &= idline
                            idbox3.Text &= idline
                            timein1.Text &= inline
                            timein2.Text &= inline
                            timein3.Text &= inline
                            timeout1.Text &= inline
                            timeout2.Text &= inline
                            timeout3.Text &= inline
                        End While
                    End If
                End Using
            Catch ex As Exception
                MessageBox.Show(ex.ToString())
            End Try
        End Using
        con.Close()
    End Sub
End Class

Upvotes: 1

Views: 1059

Answers (2)

Das Nuk
Das Nuk

Reputation: 46

Have you tried using a DataTable? I built a form that pulls values on load from into a DataTable and in that table you can specify the columns that appear and in what order. I used the built in functions in MS VS17 RC to link the tables. Might help you out with your issue.

Private Sub Form4_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Dim sqlConn As New SqlConnection("Connection String Info")
    Dim cmd As New SqlCommand
    Dim dr As New SqlDataAdapter("-Query String-", sqlConn)
    Dim dt As New DataTable
    Try
        If sqlConn.State = ConnectionState.Closed Then


            sqlConn.Open()

            dr.Fill(dt)

            Menu.DisplayMember = "prod_name" --add your columns here
            Menu.DataSource = dt

            sqlConn.Close()
        End If

    Catch ex As Exception
        MsgBox(ex.Message)

    End Try
    Order.Clear()
    For Each Item As Object In Menu.SelectedItems
        Order.AppendText(Item.ToString = Environment.NewLine)
    Next
End Sub

Upvotes: 1

Michael Vergara
Michael Vergara

Reputation: 21

This works fine with me. I got what I need to do. Thank you for the ideas. "Imports System.Data Imports MySql.Data.MySqlClient

Public Class Form2 Dim con As MySqlConnection = New MySqlConnection("data source=localhost; user id=root; database=abc; password=")

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Dim con As MySqlConnection = New MySqlConnection("data source=localhost; user id=root; database=abc; password=")
    Dim query As String = "SELECT id,timein,timeout FROM emp"
    con.Open()
    Dim dt As New DataTable
    Dim da As New MySqlDataAdapter("SELECT * FROM emp ORDER BY id ASC", con)
    da.Fill(dt)
    idbox1.Text = dt.Rows(0)("id").ToString()
    idbox2.Text = dt.Rows(1)("id").ToString()
    idbox3.Text = dt.Rows(2)("id").ToString()
    timein1.Text = dt.Rows(0)("timein").ToString()
    timein2.Text = dt.Rows(1)("timein").ToString()
    timein3.Text = dt.Rows(2)("timein").ToString()
    timeout1.Text = dt.Rows(0)("timeout").ToString()
    timeout2.Text = dt.Rows(1)("timeout").ToString()
    timeout3.Text = dt.Rows(2)("timeout").ToString()
    con.Close()
End Sub

End Class "

Upvotes: 1

Related Questions