VB.net让Scalar将值保存到变量中

时间:2013-12-01 14:10:55

标签: sql vb.net sql-server-express scalar

我一直在寻找没有运气的论坛。我试图从数据库中检索一个值并将其存储到一个变量。我得到的最接近的是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。我也不确定为什么示例代码没有关闭数据库连接。有关如何解决此问题以获取正确变量的任何想法?

1 个答案:

答案 0 :(得分:0)

我的解决方案与这个问题无关,但是在我发布的位之后,我有一个单独的代码执行。它正在重置dblAircraftHourlyRate的值,使得dblAircraftHourlyRate = ddAircraft.SelectedItem.Value在我注释掉该行之后,代码工作得很好。为了澄清,下拉列表中的值是AircraftID,而不是HourlyRate。

Tim Schmelter也帮助我解释了Connection-Pooling的工作原理:

默认情况下启用Connection-Pooling。默认表示即使您未在连接字符串中指定Pooling参数,也会启用它。连接池有助于提高性能,因为它可以维护物理连接的状态。因此,即使您关闭连接,物理连接也会保持打开状态(如果您在数据库中进行检查)。您正在使用Using语句,这是最佳实践。处置连接将“关闭”它。 - Tim Schmelter