Bonjour,

Après avoir parcouru une multitudes de topics anglais sur le phénomène du SqlDataReader.HasRows qui retourne sans cesse true même sans résultats (et particulièrement lorsqu'il s'agit d'une requête SQL avec un agrégat), je sèche complétement sur mon code

Cependant mon exemple est très simple et HasRows me retoune True, FieldCount me retourne 1 même quand il n'y a aucune ligne côté phpMyAdmin.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
query = "SELECT FK_BarId FROM tlink_bar_beer WHERE FK_BeerId = " + sqlDataReader.GetInt32(0);
 
MySqlConnection sqlConnexionList = new MySqlConnection("server=localhost;database=beerchecking;uid=root;password=;");
MySqlCommand commandList = new MySqlCommand(query, sqlConnexionList);
sqlConnexionList.Open();
 
//MySqlDataReader sqlDataReaderList = commandList.ExecuteReader();
//Console.WriteLine(sqlDataReaderList.HasRows);
 
int[] BarsIds;
using (MySqlDataReader sqlDataReaderList = commandList.ExecuteReader())
{
    if (sqlDataReaderList.HasRows)
    {
        try
        {
            BarsIds = new int[sqlDataReaderList.FieldCount];
            int counter = 0;
 
            if (sqlDataReaderList.Read())
            {
                while (sqlDataReaderList.Read())
                {
                    int id = sqlDataReaderList.GetInt32(counter);
                    BarsIds[counter] = id;
                    counter++;
                }
            }
        }
        finally
        {
            sqlDataReaderList.Close();
        }
    }
    else
    {
        BarsIds = new int[0];
    }
}
 
sqlConnexionList.Close();
Merci de votre lecture.