Отображение данных с сервера mysql в объекте просмотра данных. ничего не отображается - PullRequest
0 голосов
/ 06 апреля 2020

Я пытался создать набор данных, используя инструмент набора данных, чтобы связать его на стороне проекта, однако это не сработало, поскольку оно продолжает исчезать, и это другой способ, которым он не отображает никаких значений в представлении сетки данных, я не уверен, почему и я довольно новичок в этой части VB, так что, если вы могли бы объяснить это, это было бы здорово. Заранее спасибо.

Imports MySql.Data.MySqlClient

Public Class Search
    Private Async Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Try
            If TextBox1.Text = "" Then 'this acts as a simple presence check on the textbox
            Else
                Dim val = "name"
                If RadioButton1.Checked = True Then 'This changes the type of search i do as it filters which column the query looks in
                    val = "type"
                End If
                Await getDataSet(TextBox1.Text) ' waits for infomation to be retrieved
            End If
        Catch ex As System.Exception
            System.Windows.Forms.MessageBox.Show(ex.Message) 'Catches any errors 
        End Try
    End Sub

    Async Function getDataSet(partname As String) As Task(Of DataSet) 'This retrieves the values that matches the users input 
        Return Await Task.Factory.StartNew(
    Function()
        Dim connectionString = "server=localhost; userid=root; password=; database=partstest1; CharSet=utf8;" 'These are the login details for the database in the form of a connection string 
        Dim commandText = "SELECT ID, Benchpoint, Name, Type, BrandID FROM `parts` WHERE `name` Like  '%" & TextBox1.Text & "%';"
        Using connDB = New MySqlConnection(connectionString), objCmd = New MySqlCommand(), objAdpt = New MySqlDataAdapter()
            connDB.Open()
            objCmd.Connection = connDB
            objCmd.CommandText = commandText
            objCmd.CommandType = CommandType.Text 'These lines specify the command i am using and execute it
            objAdpt.SelectCommand = objCmd
            Dim objDs = New DataSet()
            objAdpt.Fill(objDs) 'Puts all of the values into a dataset
            PartsDataGridView.DataSource = objDs.Tables(0) 'This shows the datasource and displays it
            Console.WriteLine(objDs)
            Return objDs
        End Using
    End Function)
    End Function
End Class

1 Ответ

0 голосов
/ 07 апреля 2020
  • Установить MySQL / connector / et c

  • Установить MySQL для Visual Studio (необходимо, чтобы он отображался в качестве источника данных в VS) - https://dev.mysql.com/downloads/windows/visualstudio/

  • Добавить новый набор данных в ваш проект enter image description here

  • Дважды щелкните набор данных, щелкните правой кнопкой мыши его поверхность, выберите Добавить >> TableAdapter enter image description here

  • Выберите существующее соединение или Новое соединение, если у вас нет существующего. Выберите MySQL База данных (установите MySQL для Visual Studio с шага 2, если он отсутствует) enter image description here

  • Введите сведения о сервере, выберите, чтобы сохранить пароль, обратно в мастере выберите Да, включите чувствительный .. и нажмите Далее , выберите Да, сохраните строку подключения , нажмите Далее выберите Используйте SQL Заявления , Далее , введите подходящий запрос, который выбирается на основе первичного ключа, например SELECT * FROM yourtable WHERE id = @id, Далее , вызовите методы FillById и GetDataById , чтобы отличить их от других запросов, которые вы можете добавить позже, например FillByCity или GetDataByStatus . В конце этого мастера вы должны иметь таблицу данных и адаптер таблицы, который выглядит как таблица вашей базы данных: enter image description here

  • Переключитесь на конструктор форм, а также убедитесь, что чтобы было открыто окно Источники данных (нажмите Меню просмотра >> Другое Windows >> * Источники данных **), разверните все узлы в Панель «Источники данных» enter image description here

  • Перетащите узел, представляющий вашу таблицу (мой называется person ), из окна источников данных и отбросьте его на форме. Появится несколько вещей:

    • представление данных, уже связанное с набором данных набора данных, показывающим данные о человеке,
    • набор инструментов с текстовым полем для ввода идентификатора (помните, что вы сделали запрос, который требует параметр),
    • другой набор инструментов с навигаторами и кнопкой сохранения),
    • набор данных (необходим для хранения данных),
    • источник привязки (действует как связь между * Набор данных и набор данных, знает, что показывает текущая запись, позволяет сортировать и фильтровать),
    • табличный адаптер (улучшенный адаптер данных, который будет извлекать данные из базы данных в набор данных и отправлять обратно любые изменения),
    • диспетчер таблиц-адаптеров (устройство, которое знает, в каком порядке запускать обновления для иерархических данных)

enter image description here

  • Кроме того, в качестве демонстрации того, как это работает, перетащите все узлы ПОД человеком на форму также - вы можете видеть, что у них разные значки. Они будут повторно использовать большинство компонентов в форме, но вы получите текстовые поля, datetimepickers, checkboxes et c, которые связаны с источником привязки и, следовательно, покажут текущий элемент из базового списка (представление данных показывает их все, с указателем текущей строки)

enter image description here

  • Запустите проект, введите идентификатор в текстовое поле, нажмите ** FillById *, записать некоторую новую информацию в другую строку внизу - она ​​будет зафиксирована в базовом наборе данных / datatable при изменении строки в DGV, обратите внимание, что перемещение назад и вперед между строками в DGV приводит к изменению текстовых полей как Понятие Текущая строка обновляется (перемещение по сетке или нажатие стрелок в навигаторе изменяет свойство привязки. Current, и все элементы управления связываются через источник привязки

enter image description here

  • нажмите save - теперь go посмотрите в свою базу данных в MySQL Workbench - новая запись есть. Вы сделали полный интерфейс с привязкой к данным, а не написанная строка кода - весь код есть в FormX.vb, если вы хотите его увидеть - написанный для вас дизайнером. Взгляните

Обратите внимание, что для идентификатора температуры все равно написано -4 (в моем пользовательском интерфейсе); программа не загрузила новый идентификатор, который был назначен БД. Чтобы сделать это, вы должны иметь возможность go вернуться к вашему набору данных, щелкнуть правой кнопкой мыши на табличном адаптере, щелкнуть Дополнительные параметры и поставить галочку на Обновить sh Дата получения - это заставит адаптер обновлять любые локальные идентификаторы после сохранения строки. Идентификаторы могут каскадно обновляться, если они являются частью набора данных между двумя таблицами дат. В MySQL это не работает (сейчас я сообщаю им об ошибке), но вы можете сделать это, вручную отредактировав файл XML, представляющий набор данных (щелкните правой кнопкой мыши DataSet в обозревателе решений, выберите Открыть с помощью .. Выберите XML Редактор , найдите оператор вставки, например:

INSERT INTO `person` (`Name`, `Birthdate`, `Salary`) VALUES (@p1, @p2, @p3)

Добавьте еще один оператор после него, чтобы он выглядел как:

INSERT INTO `person` (`Name`, `Birthdate`, `Salary`) VALUES (@p1, @p2, @p3)
;SELECT `Id`, `Name`, `Birthdate`, `Salary` FROM `person` WHERE `Id` = last_insert_id() 

Теперь сохранение таблицы приведет к обновлению пользовательского интерфейса sh со значениями идентификатора, рассчитанными с помощью автоматического приращения в БД

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