VB.net 获取标量以将值保存到变量

Posted

技术标签:

【中文标题】VB.net 获取标量以将值保存到变量【英文标题】:VB.net Getting Scalar to save a value to a variable 【发布时间】:2013-12-01 14:10:55 【问题描述】:

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

【问题讨论】:

如何检查连接是否仍然打开?物理连接使用连接池(默认)保持打开状态。 示例代码没有关闭连接,因为它不包含这样做的行。另外,您是否获得具有多个值的飞机 ID?也许这是侥幸,两个数字是一样的。 @DanBracuk:他正在使用Using-statament 来处理和关闭连接。 @VBnoob: Connection-Pooling 默认启用。 默认 表示即使您未在连接字符串中指定Pooling 参数,它也已启用。 Connection-pooling 有助于提高性能,因为它维护了物理连接的状态。因此,即使您关闭连接,物理连接也会保持打开状态(如果您在数据库中检查它)。您正在使用最佳实践的Using-statement。处理连接将“关闭”它。 请花时间分享您的解决方案作为答案。这可以帮助其他成员。尽可能接受这个答案。作为最佳实践,所有已解决的问题都应该有一个可接受的答案,以便让其他成员知道其状态。 【参考方案1】:

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

Tim Schmelter 还帮助我解释了连接池的工作原理:

默认情况下启用连接池。默认意味着即使您未在连接字符串中指定 Pooling 参数,它也已启用。连接池有助于提高性能,因为它维护物理连接的状态。因此,即使您关闭连接,物理连接也会保持打开状态(如果您在数据库中检查它)。您正在使用最佳实践的 Using 语句。处理连接将“关闭”它。 ——蒂姆·施梅尔特

【讨论】:

以上是关于VB.net 获取标量以将值保存到变量的主要内容,如果未能解决你的问题,请参考以下文章

需要帮助以获取访问表单以将值插入查询

请问VB.NET 怎么获取当前所有已登录到windows系统的用户名?

将变量从 JS 传递到 VB.net

启动对话框以获取结果以将值返回给主要活动

将值从 SQL Server 返回到 VB.Net

将变量保存到 vb.net 中的文本文件