我一直在寻找没有运气的论坛。我试图从数据库中检索一个值并将其存储到一个变量。我得到的最接近的是This。这是我的代码:
Dim dblAircraftHourlyRate As Double
Dim intAircraftID As Integer
intAircraftID = ddAircraft.SelectedItem.Value
Dim mySqlComm As String = "SELECT HourlyRate FROM Aircraft WHERE AircraftID = '" & intAircraftID & "'"
Using cn As New SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\Rollin Laptop\Desktop\CurrentAll2Fly3\App_Data\ASPNETDB.MDF;Integrated Security=True;User Instance=True"), _
cmd As New SqlCommand(mySqlComm, cn)
cn.Open()
dblAircraftHourlyRate = Convert.ToDouble(cmd.ExecuteScalar())
End Using
我不知道为什么,但不是将HourlyRate保存到dblAircraftHourlyRate,而是将intAircraftID保存到dblAircraftHourlyRate。我也不确定为什么示例代码没有关闭数据库连接。有关如何解决此问题以获取正确变量的任何想法?
答案 0 :(得分:0)
我的解决方案与这个问题无关,但是在我发布的位之后,我有一个单独的代码执行。它正在重置dblAircraftHourlyRate的值,使得dblAircraftHourlyRate = ddAircraft.SelectedItem.Value在我注释掉该行之后,代码工作得很好。为了澄清,下拉列表中的值是AircraftID,而不是HourlyRate。
Tim Schmelter也帮助我解释了Connection-Pooling的工作原理:默认情况下启用Connection-Pooling。默认表示即使您未在连接字符串中指定Pooling参数,也会启用它。连接池有助于提高性能,因为它可以维护物理连接的状态。因此,即使您关闭连接,物理连接也会保持打开状态(如果您在数据库中进行检查)。您正在使用Using语句,这是最佳实践。处置连接将“关闭”它。 - Tim Schmelter