[英]mysql select query skipping first row values
我的网页中只有一个带有学生ID的下拉列表和一个带有学生图像的网格视图。 如果我选择一个学生,则网格视图必须显示所选学生的所有图像。 问题是当我选择一个学生时,我的网格视图会跳过前两个值。 我的意思是,如果有6张图像,则网格视图仅显示4张图像。 这是我的代码:
private void BindGrid()
{
MySqlConnection con = new MySqlConnection(constr);
MySqlCommand cmd = new MySqlCommand("SELECT * FROM images where Image_ID in (" + String.Join(",", getImage_ID()) + ")", con);
MySqlDataAdapter da = new MySqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
gvImages.DataSource = dt;
gvImages.DataBind();
}
private List<int> getImage_ID()
{
List<int> i = new List<int>();
MySqlConnection con = new MySqlConnection(constr);
con.Open();
string query = "Select Come_Image_ID1, Leave_Image_ID from register where Students_ID='" + getStudents_ID() + "' AND Come_Image_ID IS NOT NULL AND Leave_Image_ID IS NOT NULL";
MySqlCommand cmd = new MySqlCommand(query);
cmd.Connection = con;
MySqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
foreach (DbDataRecord s in reader)
{
i.Add(s.GetInt32(0));
i.Add(s.GetInt32(1));
}
}
reader.Close();
return i;
}
此问题的最佳编码做法是什么?
您正在混合读取数据的方式。 您可以进行while
循环:
while (reader.Read())
{
i.Add(reader.GetInt32(0));
i.Add(reader.GetInt32(1));
}
或foreach
循环:
foreach (DbDataRecord s in reader)
{
i.Add(s.GetInt32(0));
i.Add(s.GetInt32(1));
}
但不是两者。 while
和foreach
都会消耗游标中的记录,并且像这样混合它们时,您会跳过记录, while
循环会消耗。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.