MySql 数据 Reader 未检索行
MySql Data Reader not retrieving rows
我在使用 MySql DataReader 时遇到了一些奇怪的行为。查询在 Mysql Explorer 中正确评估(也就是说,它是 returns 预期的记录)。但是,在调试应用程序时,错误显示为:
枚举没有结果
免责声明:我知道网站上提出的以下问题
MySQL Data Reader not entering the loop
mysql datareader not finding rows c#
mysql datareader not finding rows c#
但我正在关闭 reader,没有多次引用它,正确打开和关闭连接,并使用 Mysql 而不是 SQL 服务器,所以你去吧。
现在,这是我的 C# 代码:
MySqlConnection conn = this.conectar(); // this method performs Conn.Open();
List<Clase> listaClases = new List<Clase>();
string query = "SELECT c.id_clase, c.descripcion, e.nombre, e.calle, e.numero, e.telefono, e.email, "
+ "e.id_localidad, l.d_localidad, p.d_provincia, c.id_profesor, u.apellido, u.nombre, u.email "
+ "FROM CLASE c "
+ "JOIN USUARIO u ON c.id_profesor = u.id_usuario "
+ "JOIN CLASE_ESTABLECIMIENTO ce ON c.id_clase = ce.id_clase "
+ "JOIN ESTABLECIMIENTO e ON ce.id_establecimiento = e.id_establecimiento "
+ "JOIN LOCALIDAD l ON e.id_localidad = l.id_localidad "
+ "JOIN PROVINCIA p ON l.id_provincia = p.id_provincia "
+ "WHERE e.id_localidad = ?idLocalidad AND c.id_clase = ?idClase ";
MySqlCommand cmd = new MySqlCommand(query, conn);
cmd.Parameters.Add("?idLocalidad", MySqlDbType.Int32).Value = b.idLocalidad;
cmd.Parameters.Add("?idClase", MySqlDbType.Int32).Value = c.idClase;
MySqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
var idClase = dr.GetInt32(0);
var description = dr.GetString(1);
var nombreEst = dr.GetString(2);
var calleEst = dr.GetString(3);
var altura = dr.GetInt32(4);
var domExtra = dr.GetString(5);
var telefono = dr.GetString(6);
var emailEst = dr.GetString(7);
var idLoc = dr.GetInt32(8);
var descLoc = dr.GetString(9);
var prov = dr.GetString(10);
var idProf = dr.GetInt32(11);
var ape = dr.GetString(12);
var nom = dr.GetString(13);
var emailProf = dr.GetString(14);
listaClases.Add(/* construct class, code does not reach this point */);
}
dr.Close(); //close data reader
conn.Close(); //dispose of connection
非常感谢建议,谢谢!
仔细查看后,您似乎缺少一列,当您的 select 语句中仅存在 0-13 时,您分配了 0-14。
SELECT
0 c.id_clase,
1 c.descripcion,
2 e.nombre,
3 e.calle,
4 e.numero,
5 e.telefono,
6 e.email,
7 e.id_localidad,
8 l.d_localidad,
9 p.d_provincia,
10 c.id_profesor,
11 u.apellido,
12 u.nombre,
13 u.email
我在使用 MySql DataReader 时遇到了一些奇怪的行为。查询在 Mysql Explorer 中正确评估(也就是说,它是 returns 预期的记录)。但是,在调试应用程序时,错误显示为:
枚举没有结果
免责声明:我知道网站上提出的以下问题
MySQL Data Reader not entering the loop
mysql datareader not finding rows c#
mysql datareader not finding rows c#
但我正在关闭 reader,没有多次引用它,正确打开和关闭连接,并使用 Mysql 而不是 SQL 服务器,所以你去吧。
现在,这是我的 C# 代码:
MySqlConnection conn = this.conectar(); // this method performs Conn.Open();
List<Clase> listaClases = new List<Clase>();
string query = "SELECT c.id_clase, c.descripcion, e.nombre, e.calle, e.numero, e.telefono, e.email, "
+ "e.id_localidad, l.d_localidad, p.d_provincia, c.id_profesor, u.apellido, u.nombre, u.email "
+ "FROM CLASE c "
+ "JOIN USUARIO u ON c.id_profesor = u.id_usuario "
+ "JOIN CLASE_ESTABLECIMIENTO ce ON c.id_clase = ce.id_clase "
+ "JOIN ESTABLECIMIENTO e ON ce.id_establecimiento = e.id_establecimiento "
+ "JOIN LOCALIDAD l ON e.id_localidad = l.id_localidad "
+ "JOIN PROVINCIA p ON l.id_provincia = p.id_provincia "
+ "WHERE e.id_localidad = ?idLocalidad AND c.id_clase = ?idClase ";
MySqlCommand cmd = new MySqlCommand(query, conn);
cmd.Parameters.Add("?idLocalidad", MySqlDbType.Int32).Value = b.idLocalidad;
cmd.Parameters.Add("?idClase", MySqlDbType.Int32).Value = c.idClase;
MySqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
var idClase = dr.GetInt32(0);
var description = dr.GetString(1);
var nombreEst = dr.GetString(2);
var calleEst = dr.GetString(3);
var altura = dr.GetInt32(4);
var domExtra = dr.GetString(5);
var telefono = dr.GetString(6);
var emailEst = dr.GetString(7);
var idLoc = dr.GetInt32(8);
var descLoc = dr.GetString(9);
var prov = dr.GetString(10);
var idProf = dr.GetInt32(11);
var ape = dr.GetString(12);
var nom = dr.GetString(13);
var emailProf = dr.GetString(14);
listaClases.Add(/* construct class, code does not reach this point */);
}
dr.Close(); //close data reader
conn.Close(); //dispose of connection
非常感谢建议,谢谢!
仔细查看后,您似乎缺少一列,当您的 select 语句中仅存在 0-13 时,您分配了 0-14。
SELECT
0 c.id_clase,
1 c.descripcion,
2 e.nombre,
3 e.calle,
4 e.numero,
5 e.telefono,
6 e.email,
7 e.id_localidad,
8 l.d_localidad,
9 p.d_provincia,
10 c.id_profesor,
11 u.apellido,
12 u.nombre,
13 u.email