作为通过屏幕抓取将数据导入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
答案 0 :(得分:1)
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