MySqlDataReader 不返回数据

标签 mysql vb.net mysqldatareader

作为通过屏幕抓取将数据导入 WordPress 的项目的一部分,我将新旧 URL 的数据库表存储在 MySQL 数据库中。在下面的示例中,ExecuteReader 命令似乎没有返回任何数据(-1 行受影响),我已通过工作台运行 SQL 并返回数据,因此它不是数据库中的 SQL 或数据。

在代码中的其他时候,我调用了 ExecuteNonQuery() 和 ExecuteScalar() 都没有问题(因此它不是连接字符串)。

有什么想法下一步要尝试吗?

    Dim SQL As String
    Dim conn As MySqlConnection = New MySqlConnection(_CONNECTIONSTRING)

    SQL = "SELECT OrgURL, NewURL FROM `wp_user`.`tbl_linkdata`"

    Try
        conn.Open()
        Dim cmd As MySqlCommand = New MySqlCommand(SQL, conn)
        Dim dr As MySqlDataReader = cmd.ExecuteReader()
        While (dr.Read)
            LinkHashMap.Add(dr.GetString(0), dr.GetString(1))
        End While
        Console.ForegroundColor = ConsoleColor.Cyan
        Console.WriteLine("The Hash map contains " + dr.RecordsAffected + " rows")
        dr.Close()

    Catch ex As Exception
        Console.ForegroundColor = ConsoleColor.Red
        Console.WriteLine("Exception loading the hashtable : " + ex.Message)
    Finally
        conn.Dispose()
    End Try

最佳答案

DataReader.RecordsAffected对于 SELECT 命令始终返回 -1。 LinkHashMap.Count 返回什么?在 MySqlDataReader是一样的:

"The number of rows changed, inserted, or deleted. -1 for SELECT statements"

如果您想计算记录数,可以使用LinkHashMap.Count

您:“LinkHashMap 是“什么都没有””

如何在不先初始化的情况下向其中添加内容? NullReferenceException 应该发生。因此,首先通过构造函数初始化字典(或其他任何内容):

Dim LinkHashMap As New Dictionary(Of String, String)
While (dr.Read)
    LinkHashMap.Add(dr.GetString(0), dr.GetString(1))
End While

关于MySqlDataReader 不返回数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26546962/

相关文章:

c# - Microsoft Help Viewer 可以作为一个独立的应用程序使用吗?

Python:if-endif-statement 在哪里结束?

vb.net - SSRS 组变量 SUM 和 VB.NET 自定义代码

c# - 已经有一个与此连接关联的打开的 DataReader 必须首先关闭?

c# - 如何以正确的方式管理 mysql 连接而不会出错

php - 第二次选择不会发布

mysql - 如何对MySQL表数据和列进行转置操作?

mysql - 如何使用 GUI 在两台运行 Windows 的未连接 PC 之间迁移 mysql 数据库

mysql - 如何从同一个表运行多个限制为 0, 1 的选择查询并合并所有结果