2015-12-08 3 views
0

Я сделал приложение, которое считывает данные из базы данных с помощью соединения 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 
+0

Try 'dt.Rows.Clear()' и сделать убедитесь, что ваш запрос выбора * не * получает одинаковые значения за каждый раз (это может быть причина_) –

+1

на datagrid или myData? – Dillinger

+0

На datatable .......... 'myData.Rows.Clear()' –

ответ

1

попробуйте использовать

mydata.rows.clear()

Надежда это helps.you может знать больше differences between datatable.clear() and datatable.rows.clear()

+0

Вместо строк я помещаю столбцы и работаю, спасибо. Другой вопрос, возможно, использовать тот же объект DataTable вместо myName и myData? – Dillinger

+0

ya no problem.just очистить строки и столбцы перед вставкой новых данных. –

+0

Хорошо, спасибо, хороший день :) – Dillinger

Смежные вопросы