2013-12-21 3 views
0

Итак, у меня есть эта программа, которая должна хранить много различной информации от пользователей и показывать ее через текстовые поля, Numerics и т. Д., Когда загружается форма. Сначала я подумал, что это будет легко, но как только я начал писать код, я подумал, что если бы я сделал простой способ (как я знаю), мне пришлось бы писать сотни Subs, каждый из которых был бы с запросом MySQL и затем присваивать по одному значениям их соответствующим текстовым полям, спискам со списком и т. д.VB: Заполните несколько текстовых полей данными из MySQL DB

Итак, как я могу извлекать данные из нескольких строк из базы данных MySQL, а затем назначать данные из каждой из этих строк в текстовые поля?

Это то, что у меня есть сейчас, который прекрасно работает, но только для получения одного единственного значения из БД:

Imports MySql.Data.MySqlClient 

Public Class GetInfo 


    Public Shared Sub Run() 

     Dim reader As MySqlDataReader 
     Dim result As String 

     Dim Query_Read As String = "Select Nome FROM dk_db_sql_yog." & Username 
     Dim Cmd_Read_Name As New MySqlCommand(Query_Read) 
     Cmd_Read_Name.Connection = Connect 
     reader = Cmd_Read_Name.ExecuteReader() 
     If reader.Read() Then 
      If reader.IsDBNull(0) Then 
       result = "" 
      Else 
       result = reader.GetString(0) 
      End If 
     End If 

     Form1.Name_Textbox.Text = result 
     reader.Close() 

    End Sub 

End Class 
+0

Не могли бы вы показать еще несколько итераций? И сколько TextBoxes есть? Сотни ??? –

+0

@ Bjørn-RogerKringsjå Ну, возможно, что-то вроде ~ 150 коробок для заполнения. И извините, я не понял, что вы попросили меня показать больше (не родной английский здесь: x) –

+0

Хотите ли вы пройти через коллекцию пользователей? Что-то вроде 'Для каждого пользователя в myTableOfUsers' Каково имя следующих двух элементов управления TextBox? –

ответ

1

Как я понимаю ваш вопрос, вы можете использовать DataTable:

Dim reader As MySqlDataReader 
Dim result As New Datatable 

Dim Query_Read As String = "Select Nome, Nome1, Nome2 FROM dk_db_sql_yog." & Username 
Dim Cmd_Read_Name As New MySqlCommand(Query_Read) 
Cmd_Read_Name.Connection = Connect 
result.Load(Cmd_Read_Name.ExecuteReader) 

With Form1 
    For Each dtrow AS DataRow in result.rows 
    .Name_Textbox1.Text = dtrow(0) 
    .Name_Textbox2.Text = dtrow(1) 
    .Name_Textbox3.Text = dtrow(2) 
    Next 
End With 
+0

В нем указано, что значение типа MySqlDataReader не может быть преобразовано в Datatable в 'result = Cmd_Read_Name.ExecuteReader' –

+0

@AndreSilva Правильно, вы не можете. 'ExecuteReader' возвращает читатель, а не как datatable, таким образом, ошибку. –

+0

вам просто нужно изменить 'result = Cmd_Read_Name.ExecuteReader' на' result.Load (Cmd_Read_Name.ExecuteReader) ', а затем вы можете пройти через DataTable – Jeff

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