2015-11-04 2 views
-1

, когда данные загружаются из MySQL в DataGridView это показано в то же время то, что я хочу сделать, это когда DataGridView шоу пять или семь рядов он должен прекратить выборку данных для 4 до 5 сек, то следует непрерывная остановка на 5 секунд снова что-то вроде для показа пользователю, что DataGridView его загрузки данных из MySQLкак показать DataGridView посмотреть, как это загрузка данных из MySQL

пожалуйста кто-нибудь помочь мне @ тим-Schmelter

Private Sub button3_click (ByVal отправитель Как System.Object, ByVal e As System.EventArgs) Обрабатывает Button3. Щелкните

MysqlConn = New MySqlConnection() 

    ' Define the SQL to grab data from table. 

    SQL = "SELECT * FROM dep0 " 

    'Connection String 

    MysqlConn.ConnectionString = "Server=sql2.freemysqlhosting.net;User Id=sql294434;Password=mI1*hrrD9*;Database=sql294434" 

    ' Try, Catch, Finally 

    Try 

     MysqlConn.Open() 
     ContactsCommand.Connection = MysqlConn 
     ContactsCommand.CommandText = SQL 
     ContactsAdapter.SelectCommand = ContactsCommand 
     ContactsAdapter.Fill(ContactsData) 
     DataGridView1.DataSource = ContactsData 


    Catch myerror As MySqlException 

     MessageBox.Show("Cannot connect to database: " & myerror.Message) 

    Finally 

     MysqlConn.Close() 

     MysqlConn.Dispose() 

    End Try 

End Sub 
+0

Ознакомьтесь с моим предложением в своем сообщении на форуме Microsoft vb.net, посмотрите, имеет ли он смысл [link] (https://social.msdn.microsoft.com/Forums/en-US/3ca54bb4-6bc8-43cc -8bbc-86110b8ee59b/how-to-show-datagridview-look-like-its-downloading-data-from-mysql-load-data-медленно? Forum = vbgeneral) –

+0

@ KarenPayne извините, но ваше предложение не поможет мне достичь моя цель –

+0

Не знаете, почему, поскольку Task.Delay может быть настроен на ожидание определенного периода асинхронно, а не Thread.Sleep, который останавливает другие методы от работы. Конечный результат: DataTable заполняется и становится DataSource DataGridView. –

ответ

0

ОБНОВЛЕНО с примером кода.

Если вам нужно было получить данные таким образом, вы могли бы получить запрос SQL только от 5 до 7 строк, назначить эти данные в качестве источника данных в DataGridView, а затем запустить цикл с помощью System.Threading.Thread.Sleep (5000) (чтобы сказать, чтобы он дождался 5 секунд), и каждый цикл забирает от 5 до 7 строк и каждый раз назначает новый источник данных в DataGridView.

Или вы можете получить данные для таймера. Это позволит более плавно обновлять форму. Вот пример того, как вы могли это сделать.

Private WithEvents myTimer As New Timer 

Private Sub myTimer_Tick() Handles myTimer.Tick 
    Try 
     GetData() 
    Catch ex As Exception 
     'Error handeling 
    End Try 
End Sub 

Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles btnGetData.Click 
    Try 
     myTimer.Interval = 5000 
     myTimer.Start() 
    Catch ex As Exception 
     'Error handeling 
    End Try 
End Sub 

Private Sub GetData() 
    Dim MysqlConn As New Data.SqlClient.SqlConnection 
    Dim ContactsCommand As New Data.SqlClient.SqlCommand 
    Dim ContactsAdapter As New Data.SqlClient.SqlDataAdapter 
    Dim ContactsData As New Data.DataTable 
    'Declare Static variables so they retain their values for the next sub call. 
    Static TopNumber As Integer = 5 
    Static NewRowCount As Integer = 0 
    Static OldRowCount As Integer = -1 


    Try 
     If OldRowCount < NewRowCount Then 
      MysqlConn.ConnectionString = "Server=sql2.freemysqlhosting.net;User Id=sql294434;Password=mI1*hrrD9*;Database=sql294434" 
      MysqlConn.Open() 
      ContactsCommand.Connection = MysqlConn 
      ContactsCommand.CommandText = "SELECT TOP " & TopNumber & " * FROM dep0 " 
      ContactsAdapter.SelectCommand = ContactsCommand 
      ContactsAdapter.Fill(ContactsData) 
      DataGridView1.DataSource = ContactsData 
      OldRowCount = NewRowCount 
      NewRowCount = ContactsData.Rows.Count 
      'Increment the variable to grab 5 more the next time. 
      TopNumber += 5 
     Else 
      myTimer.Stop() 
      MessageBox.Show("Done!") 
     End If 

    Catch ex As Exception 
     'Error handling 
    Finally 
     MysqlConn.Close() 
     MysqlConn.Dispose() 
    End Try 
End Sub 

Но я не советую получать и отображать данные таким образом, потому что это повредит работе программы. То, что у вас есть, даст лучшую производительность.

+0

, пожалуйста, я не знаю, как это сделать, напишите мне код, пожалуйста, мне нужно это –

+0

. Я думаю, что вы понимаете, что я хочу делать, но я не знаю, как выполнить это , так что вы могли бы мне помочь –

+0

У меня есть обновление мой ответ. Я надеюсь, что это помогает. @MouhcinIuoanid – Hawkeye