Простой синтаксис VB для отображения некоторых значений из базы данных

#mysql #vb.net #visual-studio

#mysql #vb.net #visual-studio

Вопрос:

Я очень новичок в Visual Basic (использую Visual Studio 2010). Я просто провожу несколько тестов для подключения к базе данных mysql.

Я не знаю, как вызвать эти значения после того, как я сделал sql-запрос.

Как мне это сделать, то есть отобразить значения в метках формы?

Код:

 Imports MySql.Data.MySqlClient
Public Class Form1

    Dim ServerString As String = "Server = localhost; User Id = root; database = CALIBRA"
    Dim SQLConnection As MySqlConnection = New MySqlConnection

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

        SQLConnection.ConnectionString = ServerString

        Try
            If SQLConnection.State = ConnectionState.Closed Then
                SQLConnection.Open()
                MsgBox("Successfully connected to MySQL database.")
            Else
                SQLConnection.Close()
                MsgBox("Connection is closed.")
            End If
        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try
    End Sub

    Public Sub calibra_query(ByRef SQLStatement As String)
        Dim cmd As MySqlCommand = New MySqlCommand

        With cmd
            .CommandText = SQLStatement
            .CommandType = CommandType.Text
            .Connection = SQLConnection
            .ExecuteNonQuery()
        End With

        SQLConnection.Close()
        MsgBox("Records Successfully Retrieved")
        SQLConnection.Dispose()
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim SQLStatement As String = "SELECT Auto1, Auto2, TotalWeight FROM txticket WHERE TicketCode = '12210'"
        calibra_query(SQLStatement)

        Dim Automobile1, Automobile2, TotalWgt As Long

    SOMETHING MISSING HERE
    SOMETHING MISSING HERE

    Label2.Text = Automobile1.ToString()
    Label2.Text = Automobile2.ToString()
    Label2.Text = TotalWgt.ToString()

    End Sub
End Class
  

Что мне добавить в «ЗДЕСЬ ЧЕГО-ТО НЕ ХВАТАЕТ»? Большое спасибо.

Ответ №1:

Вам понадобится средство чтения данных, чтобы прочитать содержимое того, что возвращается из sql-запроса. Ваш вспомогательный запрос calibra_query выполняет функцию nonreader, которая не собирается делать то, что вам нужно. Вы хотите использовать executeNonReader только для того, для чего вам не нужен результат. (Например, инструкция Update)

Вы хотите что-то более похожее на это:

  Dim cmd As MySqlCommand = New MySqlCommand

With cmd
    .CommandText = SQLStatement
    .CommandType = CommandType.Text
    .Connection = SQLConnection
End With

  Dim myReader as MySqlDataReader = myCommand.ExecuteReader

  If myReader.Read Then
     TextBox1.Text = myReader.GetString(0)
     TextBox2.Text = myReader.Getstring(1)
     TextBox3.Text = myReader.GetInt32(2)
  End If

  myReader.Close()
  SQLConnection.Close()
  MsgBox("Records Successfully Retrieved")
  SQLConnection.Dispose()
  

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

(Редактировать: для исправления форматирования)

Комментарии:

1. большое спасибо. Просто изучаю этот язык. Я отформатирую это так, как мне нужно, но у меня такая ошибка ‘myCommand’ не объявлен