Как получить данные из базы данных SQL в мои динамические текстовые поля VB.NET
Привет, ребята/девушка, как поживаете? У меня есть одна проблема. Я создаю экзаменационную систему, которая должна давать 40 случайных вопросов из таблицы базы данных(mySQL). Мне удалось создать ( не идеально, все еще небольшие проблемы с .position и .size ) текстовые поля и checkboxex (on button click event ). И мне удалось получить одну (первую строку) данных из моего sql, но затем она останавливается. Я не могу создать больше текстовых полей или checkboxex. См. мой код ниже. Если вы не до конца поняли, чего я хочу или что мне нужно, пожалуйста, задайте вопрос, и я дам ответ.
Что я уже пробовал:
<pre>Imports System.Data.SqlClient Public Class Form1 Dim cn As New SqlConnection("Data Source=192.168.0.45,1433;Network Library=DBMSSOCN;Initial Catalog=DB_GS-TMT_SSuite;User ID=itmahir;Password=itadmin;") Private m_textboxes() As TextBox = {} Private m_checkboxes() As CheckBox = {} Dim i As Integer = m_textboxes.Length Dim a As Integer = m_checkboxes.Length Public Overrides Property AutoScroll As Boolean Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click ReDim Preserve m_textboxes(i) m_textboxes(i) = New TextBox With m_textboxes(i) .Name = "TextBox" & i.ToString .Text = "TextBox" & i.ToString If m_textboxes.Length < 2 Then .SetBounds(10, 10, 100, 20) Else .Left = m_textboxes(i - 1).Left .Top = m_textboxes(i - 1).Top + m_textboxes(i - 1).Height + 4 .Size = m_textboxes(i - 1).Size End If .Tag = i End With AddHandler m_textboxes(i).TextChanged, AddressOf TextBox_TextChanged Me.Controls.Add(m_textboxes(i)) CitacBaze() ReDim Preserve m_checkboxes(a) m_checkboxes(a) = New CheckBox With m_checkboxes(a) .Name = "CheckBox" & a.ToString .Text = "CheckBox" & a.ToString If m_checkboxes.Length < 2 Then .SetBounds(135, 10, 100, 20) Else .RightToLeft = m_checkboxes(a - 1).RightToLeft .Top = m_checkboxes(a - 1).Top + m_checkboxes(a - 1).Height + 4 .Size = New Size(20, 20) End If .Tag = a End With AddHandler m_checkboxes(a).CheckStateChanged, AddressOf CheckBox_CheckStateChanged CitacOdgovora() Me.Controls.Add(m_checkboxes(a)) End Sub Private Sub TextBox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Dim txt As TextBox = DirectCast(sender, TextBox) Debug.WriteLine(txt.Name & ": [" & txt.Text & "]") End Sub Private Sub CheckBox_CheckStateChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Dim chB As CheckBox = DirectCast(sender, CheckBox) Debug.WriteLine(chB.Name & ": [" & chB.Text & "]") End Sub Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Me.AutoScroll = True End Sub Public Sub CitacBaze() cn.Open() Dim cmd As New SqlCommand Dim dadapter As New SqlDataAdapter Dim datardr As SqlDataReader Dim strSql As String strSql = "SELECT * FROM TBL_Testiranje_Radnik" cmd.CommandText = strSql cmd.Connection = cn dadapter.SelectCommand = cmd datardr = cmd.ExecuteReader If datardr.HasRows Then datardr.Read() With m_textboxes(i) .Text = datardr("TekstPitanje") End With End If cn.Close() End Sub Public Sub CitacOdgovora() cn.Open() Dim cmd As New SqlCommand Dim dadapter As New SqlDataAdapter Dim datardr As SqlDataReader Dim strSql As String strSql = "SELECT * FROM TBL_Testiranje_Radnik" cmd.CommandText = strSql cmd.Connection = cn dadapter.SelectCommand = cmd datardr = cmd.ExecuteReader If datardr.HasRows Then datardr.Read() With m_checkboxes(a) .Text = datardr("OdgovorA") End With End If cn.Close() End Sub Public Sub KreiranjeTextBox() ReDim Preserve m_textboxes(i) m_textboxes(i) = New TextBox With m_textboxes(i) .Name = "TextBox" & i.ToString .Text = "TextBox" & i.ToString If m_textboxes.Length < 2 Then .SetBounds(10, 10, 100, 20) Else .Left = m_textboxes(i - 1).Left .Top = m_textboxes(i - 1).Top + m_textboxes(i - 1).Height + 4 .Size = m_textboxes(i - 1).Size End If .Tag = i End With AddHandler m_textboxes(i).TextChanged, AddressOf TextBox_TextChanged Me.Controls.Add(m_textboxes(i)) CitacBaze() End Sub Public Sub KreiranjeCheckBoxova() ReDim Preserve m_checkboxes(a) m_checkboxes(a) = New CheckBox With m_checkboxes(a) .Name = "CheckBox" & a.ToString .Text = "CheckBox" & a.ToString If m_checkboxes.Length < 2 Then .SetBounds(135, 10, 100, 20) Else .RightToLeft = m_checkboxes(a - 1).RightToLeft .Top = m_checkboxes(a - 1).Top + m_checkboxes(a - 1).Height + 4 .Size = New Size(20, 20) End If .Tag = a End With AddHandler m_checkboxes(a).CheckStateChanged, AddressOf CheckBox_CheckStateChanged CitacOdgovora() Me.Controls.Add(m_checkboxes(a)) End Sub End Class
FranzBe
Вместо оператора datardr. Read () попробуйте выполнить цикл
А datardr.Читать()
- обработай свою запись
Конец Пока
j snooze
Я также рекомендую не указывать фактическое имя пользователя и пароль в вашей публикации кода. Только он закончит какие-то прохожие являются вредоносными.