如何解决使用动态创建的控件进行数据库操作
我有一个flowLayoutPanel,用户可以在其中动态添加多达10个控件(文本框)。用户还可以通过按每个控件侧面的指定删除按钮来删除任何创建的控件。 当我单击“保存”按钮时,我希望将所有文本框的值保存到如下所示的SQL表中:
|user_id |textbox_id |text | ------------------------------------- |1 |1 |sampletext1| |1 |2 |sampletext2| |1 |3 |sampletext3| |1 |4 |sampletext4| |... |... |... |
当我按下“保存”按钮时,我的代码逻辑如下所示:
Dim FindRecord As String
Dim Update As String
Dim Insert As String
Dim Delete As String
FindRecord = "SELECT * FROM Table WHERE user_id=@user_id AND textbox_id=@textbox_id"
Update = "UPDATE Table SET text=@text WHERE user_id=@user_id AND textbox_id=@textbox_id"
Insert = "INSERT INTO Table (user_id,textbox_id,text) VALUES (@user_id,@textbox_id,@text)"
Delete = "DELETE FROM Table WHERE user_id=@user_id AND textbox_id=@textbox_id"
For i As Integer 1 To 10
cmd.Parameters("@user_id").Value = My.Settings.CurrentUserID
cmd.Parameters("@textbox_id").Value = i
targetTextBox = CType(FlowLayoutPanel1.Controls($"textbox{i}"),Control)
cmd.Parameters("@text").Value = targetTextBox.Text
cmd = New SqlCommand(FindRecord,connection)
connection.Open()
datareader = cmd.ExecuteReader()
'if datareader.read AND $textbox{i} exists then
connection.Close()
cmd = New SqlCommand(Update,connection)
connection.Open()
cmd.ExecuteNonQuery()
'ElseIf datareader.read AND $textbox{i} doesn't exists then
connection.Close()
cmd = New SqlCommand(Delete,connection)
connection.Open()
cmd.ExecuteNonQuery()
'Else if datareader didn't return any rows and $textbox{i} doesn't exists then
connection.Close()
cmd = New SqlCommand(Insert,connection)
connection.Open()
cmd.ExecuteNonQuery()
'end if
connection.Close()
Next
是否具有检测控件是否存在的功能?以及如何检查DataReader是否未返回任何内容?对于这种情况,也许有更好的解决方案?
期待您的答复。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。