我在表单上有一个“保存”按钮,用于将数据保存到DB,并且我想创建一个简短的代码来“不保存任何内容”。如果用户不进行更改,因为保存涉及很多Textbox / Combobox / DateTimePicker值。
换句话说,有什么我可以使用的解决方案,而不是像这样:
Using con As OracleConnection = New OracleConnection("Data Source=MyDB;User Id=Lucky;Password=MyPassword;")
con.Open()
Using cmd As OracleCommand = New OracleCommand()
Const SQL As String = "INSERT INTO MYTable (Field1,Field2,Field3 etc.) VALUES(: example1, : example2,: example3, etc.)"
cmd.Connection = con
cmd.Parameters.Add(New OracleParameter(": example1",Textbox1.Text ))
cmd.Parameters.Add(New OracleParameter(": example2",Textbox2.Text ))
cmd.Parameters.Add(New OracleParameter(": example3",Textbox3.Text ))
cmd.CommandText = SQL
If Textbox1.text="" And Textbox2.text="" And Textbox3.text="" Then
'Do nothing
Else
cmd.ExecuteNonQuery()
MessageBox.Show("Saved successfully")
End if
End Using
End Using
目前,即使文本框为空,我的代码也保存到DB中-因此可能插入了空字符串。
首先,您可以简单地编写代码
If Textbox1.text="" And Textbox2.text="" And Textbox3.text="" Then
'Do nothing
Else
cmd.ExecuteNonQuery()
MessageBox.Show("Saved successfully")
End if
If Not (Textbox1.text="" And Textbox2.text="" And Textbox3.text="") Then
cmd.ExecuteNonQuery()
MessageBox.Show("Saved successfully")
End if
要不然
If Textbox1.text="" And Textbox2.text="" And Textbox3.text="" Then Exit Sub
cmd.ExecuteNonQuery()
MessageBox.Show("Saved successfully")
解决其余问题的一种可能方法是事件+标志。给每个控件一个侦听器(Textchanged,ValueChanged,..取决于控件)。如果触发,则将标志Changes made
从默认设置False
为True
最后检查是否Changes made
为True
-如果是,则将其保存到DB。
否定的:如果用户放置了一些文本,然后将其删除,则标记仍然为true-但是您可以在许多应用程序中看到此行为。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句