奇妙な問題があります。私は MySQL Connector.NET を使用していますが、MySqlReader.Read()
時々 true を返したり、時には false を返したりします。MySqlReader.HasRows
どちらの場合も true であり、VisualStudio では、リーダー オブジェクトがすべての値を保持していることがわかります。
なぜそれが起こり得るのですか?
これが私のコードです:
MySqlCommand sqlCommand = new MySqlCommand(sqlCode, this._conn);
MySqlDataReader rdr = sqlCommand.ExecuteReader();
PopulateMessage("--> " + serverName + ": " + dbName);
int fields = rdr.VisibleFieldCount;
//make headers
int[] fmaxl = new int[fields];
string[] headers = new string[fields];
List<string[]> vals = new List<string[]>();
if (rdr.HasRows)
{
for (int hi = 0; hi < fields; hi++)
{
string val = rdr.GetName(hi);
headers[hi] += val;
fmaxl[hi] = val.Length;
}
while (rdr.HasRows && rdr.Read()) // <-- here the Read() method returns
// false or true sometimes
// while HasRows is true
{
...
EIDT:rdr
たとえば、99 行の値を保持し (VS でチェック)、最初の呼び出しでRead()
メソッドは false を返します。この有益な通知を私にさせてくれた Joachim に感謝します。