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