你好,我在用MySqlDataReader阅读时遇到了问题。我试着把while()改成if(),然后就成功了。所以我对while (Reader.Read())做了一些错误的事情。谢谢你的回答。(今天的另一个问题已经解决了,有人评论帮助了我xd )
using (MySqlCommand cmd = new MySqlCommand
("SELECT * FROM `citationer`", mysqlCon))
{
try
{
MySqlDataReader Reader = cmd.ExecuteReader();
while (Reader.Read()) // this part is wrong somehow
{
citationstexter.Add(Reader.GetString(loopReading)); // this works
loopReading++; // this works
}
Reader.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}发布于 2011-04-10 01:45:43
您的问题是使用GetString的loopReading参数。这个参数应该是从零开始的列序数(列号),但是您读取的每一行都递增它。
有关更多信息,请查看此处:http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader.getstring.aspx
您应该为citationer表的第一列使用0,为第二列使用1,依此类推。
另外,这是一个很好的实践,使用
using(MySqlDataReader Reader = cmd.ExecuteReader())
{
...
}就像您为避免内存泄漏而对mySqlCommand对象所做的那样(但这不是您的问题)。
https://stackoverflow.com/questions/5606643
复制相似问题