0

作为通过屏幕抓取将数据导入 wordpress 的项目的一部分,我有一个存储在 MySQL 数据库中的新旧 URL 的数据库表。在下面的示例中,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
4

1 回答 1

0

DataReader.RecordsAffected对于 SELECT 命令,总是返回 -1。LinkHashMap.Count 返回什么?里面MySqlDataReader是一样的:

“更改、插入或删除的行数。SELECT 语句为 -1”

如果要计算可以使用的记录数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
于 2014-10-24T12:40:16.187 回答