MySqlDataReader没有返回数据

时间:2014-10-24 11:24:46

标签: mysql vb.net mysqldatareader

作为通过屏幕抓取将数据导入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

1 个答案:

答案 0 :(得分:1)

对于SELECT命令,

DataReader.RecordsAffected始终返回-1。 LinkHashMap.Count返回什么?在MySqlDataReader中它是相同的:

  

“更改,插入或删除的行数。-1为SELECT   陈述“

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

你:“LinkHashMap是”Nothing“”

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

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