Я сделал приложение, которое считывает данные из базы данных с помощью соединения localhost.
Теперь в событии загрузки я устанавливаю соединение и вставляю все доступные имена таблиц в ComboBox1
, этот элемент управления позволяет мне выбрать таблицу, где я хочу читать данные.
Как вы можете видеть, я создал функцию getData()
, эта функция необходима для переноса данных из выбранной таблицы из ComboBox1
.
Теперь проблема в том, что когда я выбираю во второй раз другую таблицу, я получаю столбец ранее загруженной таблицы, и я не знаю, почему, потому что я использую .Clear()
. Я также пробовал с .Reset()
, и это кажется рабочим, но если Я использую .Reset()
. Я получаю пустое значение таблицы.
Еще одна вещь, которая довольно раздражает, - это использование более DataTable
, infact, если я использую только myName
также в функции getData()
. Я получаю также атрибут Table_Name
, поэтому можно также оптимизировать код?
Код:DataTable .clear не удаляет предыдущие данные.
Imports MySql.Data.MySqlClient
Public Class DataIn
Dim myCommand As New MySqlCommand
Dim myAdapter As New MySqlDataAdapter
Dim myName As New DataTable
Dim myData As New DataTable
Dim SQL As String
Dim MysqlConn As MySqlConnection
Private Sub DataIn_Load(sender As Object, e As EventArgs) Handles MyBase.Load
MysqlConn = New MySqlConnection()
MysqlConn.ConnectionString = "server=localhost;" _
& "user id=root;" _
& "password=123456789;" _
& "database=calendario"
Try
MysqlConn.Open()
myCommand.Connection = MysqlConn
myCommand.CommandText = SQL
myAdapter.SelectCommand = myCommand
myAdapter.Fill(myName)
For intcount = 0 To myName.Rows.Count - 1
ComboBox1.Items.Add(myName.Rows(intcount).Item(0))
Next
Catch myerror As MySqlException
MessageBox.Show(myerror.Message)
Finally
MysqlConn.Close()
MysqlConn.Dispose()
End Try
End Sub
Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
getData()
End Sub
Public Sub getData()
Try
SQL = "SELECT * FROM " & ComboBox1.SelectedItem.ToString()
myCommand.CommandText = SQL
myAdapter.SelectCommand = myCommand
myData.Clear()
myAdapter.Fill(myData)
DataGridView1.DataSource = Nothing
DataGridView1.DataSource = myData
Catch ex As Exception
MessageBox.Show(ex.Message)
Finally
MysqlConn.Close()
MysqlConn.Dispose()
End Try
End Sub
End Class
Try 'dt.Rows.Clear()' и сделать убедитесь, что ваш запрос выбора * не * получает одинаковые значения за каждый раз (это может быть причина_) –
на datagrid или myData? – Dillinger
На datatable .......... 'myData.Rows.Clear()' –