【问题标题】:SQL select return value to variableSQL选择返回值到变量
【发布时间】:2009-09-14 13:15:20
【问题描述】:

使用:ASP.net 使用 VB.net 连接到 MS SQL Server

我要做的是获取 SQL 选择查询的结果并将其放在字符串变量中,以便可以在文本框或标签等内容中使用它。到目前为止的代码不起作用...

Imports System.Data.SqlClient

部分类 dev_Default 继承 System.Web.UI.Page

Protected Sub form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles form1.Load


    Dim cnPodaci As New SqlConnection
    cnPodaci.ConnectionString = "Data Source=<server>;Initial Catalog=<DB>;User ID=<UserName>;Password=<Password>"
    cnPodaci.Open()
    Dim cm As New SqlCommand
    cm.CommandText = "SELECT * FROM tbl1"
    cm.Connection = cnPodaci
    Dim dr As SqlDataReader
    dr = cm.ExecuteReader

    TextBox1.Text = dr.GetString(0)


    cnPodaci.Close()

End Sub

结束类

【问题讨论】:

  • 您应该真正使用“使用”命令进行连接和数据读取器。也尝试调用 dr.Read() 方法

标签: asp.net sql vb.net


【解决方案1】:

虽然您已通过在命令上调用“ExecuteReader”来执行查询,但实际返回的是一个对象(DataReader),它允许您遍历任何查询结果。为此,您必须调用 DataReader 上的“Read”方法(这可以在“while”循环的子句中多次调用)。将您的代码修改为这样的东西应该可以工作:

If dr.Read() Then
    TextBox1.Text = dr.GetString(0)
End If

但是,请记住,这仅在查询返回的第一个字段是字符串时才有效,否则可能会引发强制转换异常。

【讨论】:

    【解决方案2】:

    如果查询应该返回单个值,您可以简单地使用ExecuteScalar 方法:

     TextBox1.Text = DirectCast(cm.ExecuteScalar(), String)
    

    【讨论】:

      【解决方案3】:

      问题是 SELECT 查询将返回一个数据集,或者至少从数据集中返回一行,而不是字符串。

      您绝对需要将整个结果集作为字符串吗?或者可以通过引用数组或数据集中的点来实现您想要做的事情吗?

      【讨论】:

        猜你喜欢
        • 2011-02-14
        • 2017-06-26
        • 1970-01-01
        • 2015-06-20
        • 1970-01-01
        • 2023-03-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多