无法读取 SqlDataReader 对象

Posted

技术标签:

【中文标题】无法读取 SqlDataReader 对象【英文标题】:Cannot read SqlDataReader Object 【发布时间】:2019-11-27 11:18:58 【问题描述】:

试图从我的 azure db 获得响应,我正在使用推荐的 microsoft snippet

Dim sb As StringBuilder = New StringBuilder()
sb.Append("select top 1 runname from vNameCode")
'sb.Append("where untgscod = ")
Dim sql As String = sb.ToString()
Using command As SqlCommand = New SqlCommand(sql, connection)
    Using reader As SqlDataReader = command.ExecuteReader()
        While reader.Read()
            Console.WriteLine("0 1", reader.GetString(0), reader.GetString(1))
        End While

但当我尝试读取这些值时,我得到了错误:

System.IndexOutOfRangeException: '索引超出了数组的范围。'

我取回了一个对象,但无法以推荐的方式读取它。任何想法我做错了什么?

【问题讨论】:

【参考方案1】:

由于您从表vNameCode 中获取runname,但您尝试从reader 访问两个值。

进行其中一项更改:

    SELECT 语句中包含相应的值。 从Console.WriteLine 中删除reader.GetString()

试试下面

Dim sb As StringBuilder = New StringBuilder()
sb.Append("select top 1 runname from vNameCode")     
Dim sql As String = sb.ToString()
Using command As SqlCommand = New SqlCommand(sql, connection)
    Using reader As SqlDataReader = command.ExecuteReader()
        While reader.Read()
            Console.WriteLine("0", reader.GetString(0))
        End While
    End Using
End Using

【讨论】:

以上是关于无法读取 SqlDataReader 对象的主要内容,如果未能解决你的问题,请参考以下文章

C# - 无法将类型“IBM.Data.DB2.iSeries.iDB2DataReader”隐式转换为“System.Data.SqlClient.SqlDataReader”

sqlDataReader的应用

C#使用SqlDataReader读取数据库数据时CommandBehavior.CloseConnection参数的作用

如何在 JavaScript 中使用 C# SQLDataReader 对象

关于SqlDataReader使用的一点疑惑

使用 SQLDataReader 读取 IP 地址