У меня есть странная проблема. Я использую MySQL Connector.NET, но MySqlReader.Read()
иногда возвращает true, а иногда и false. MySqlReader.HasRows
верно как в случае, так и в VisualStudio. Я вижу, что объект-читатель сохраняет все значения.MySQL .Net Connector - MySqlReader.Read() возвращает false
Почему это могло случиться?
Вот мой код:
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()
возвращает ложь. Спасибо Joachim за то, что я сделал это полезное уведомление.
какая версия разъема вы используете? и какой MySQL? – nawfal
Я чувствую, что код внутри 'while' имеет значение. –
@MichaelPerrenoud - как это может быть актуально, если 'Read()' return 'false' предотвращает ввод« во время »;) – Joe