我的表单上有一个“保存”按钮,用于将数据保存到数据库,我想为&#34创建一个简短的代码;不保存任何内容"如果用户没有进行更改,因为保存涉及很多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,即使文本框是空白的 - 所以可能会插入空字符串。
答案 0 :(得分:0)
首先,您可以简单地使用您的代码
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
- 如果是,则将其保存到数据库。
否定:如果用户放置了一些文本并在之后将其删除,则该标志仍然为真 - 但您可以在许多应用程序中看到此行为。