【问题标题】:DataTable .clear doesn't remove the previous dataDataTable .clear 不会删除以前的数据
【发布时间】:2015-12-08 12:09:12
【问题描述】:

我创建了一个使用 localhost 连接从数据库读取数据的应用程序。
现在,在加载事件中,我建立连接并将所有可用的表名插入ComboBox1,此控件允许我选择表我想在哪里读取数据。
你怎么看我已经创建了getData() 函数,这个函数是从ComboBox1 中的选定表中获取数据所必需的。
现在的问题是,当我第二次选择另一个表时,我加载了先前表的列,但我不知道为什么,因为我使用的是 .Clear() 我也尝试过使用 .Reset()这似乎有效,但如果我使用.Reset(),我会得到空表值。
另一件很烦人的事情是使用更多DataTable,事实上,如果我在getData() 函数中也只使用myName,我还获得属性Table_Name,那么也可以优化代码吗?

代码:

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

【问题讨论】:

  • 尝试dt.Rows.Clear() 并确保您的选择查询不会每次都检索相同的值(这可能是一个原因)跨度>
  • 在数据网格上还是在 myData 上?
  • 在数据表上.........myData.Rows.Clear()

标签: mysql .net vb.net


【解决方案1】:

尝试使用

mydata.rows.clear()

希望对您有所帮助。您可以了解更多differences between datatable.clear() and datatable.rows.clear()

【讨论】:

  • 我放了列而不是行,谢谢。另一个问题是可能使用相同的 DataTable 对象而不是 myName 和 myData?
  • 没问题。在插入新数据之前清除行和列。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多