【发布时间】:2019-06-01 06:04:50
【问题描述】:
这可能是个愚蠢的问题,但我需要一些解决方案。
我已经做到了
cmd.CommandText = "Insert Table1(Col1,Col2,Col3,Date) Values (1,'aa',101,?)"
cmd.Connection = con2
cmd.Parameters.AddWithValue("@Date", transdate)
ExecuteQuery(con2,cmd)
我写了下面的代码以避免写Using.. End Using无处不在。
如果没有参数,查询运行良好。
Private Sub ExecuteQuery(con as OledbConnection,cmd as OledbCommand)
Using con1 As New OleDbConnection(con.ConnectionString)
Using cmd1 As New OleDbCommand(cmd.CommandText)
cmd1.Connection = con1
con1.Open()
cmd1.ExecuteNonQuery()
con1.Close()
End Using
End Using
当我在Using Block 下编写 cmd 时,它可以很好地处理参数。
但正如我所说,我避免到处写Using。
但是这样做会产生错误——No Given values for one or more required parameters.
【问题讨论】:
-
为什么,哦,你为什么要避免写 Using 块。它应该让你的生活更轻松。不再有关闭和处置代码。
-
将数据库对象保存在本地。在方法中声明为局部变量。在方法中使用它们。然后以相同的方法关闭并处置它们。这些对象可能正在使用 GC 无法收集的非托管代码。这使得 Dispose 很重要,因此对象可以释放非托管资源。
标签: vb.net oledb oledbcommand