簡體   English   中英

MySQL選擇查詢跳過第一行值

[英]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));
}

但不是兩者。 whileforeach都會消耗游標中的記錄,並且像這樣混合它們時,您會跳過記錄, while循環會消耗。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM