【问题标题】:Retrieving multiple rows from database从数据库中检索多行
【发布时间】:2016-02-09 19:31:47
【问题描述】:

我有一个assignedset 表,其中有两行。我想从 1 和 3 两行中检索 set_number。我的代码在下面,现在它检索到的 3 和 3 不正确。谁能帮我解决这个问题?

MySqlCommand SelectCommand = new MySqlCommand("Select set_number from assignedset where patient_nric='" + NRIC + "'", myConn);

MySqlDataReader myReader;
myConn.Open();
myReader = SelectCommand.ExecuteReader();
int count = 0;
while (myReader.Read())
{
  count = count + 1;
}
if (count > 0)
{
  string SetName = myReader.GetString("set_number");
  //int[] numbers;
  int s = 1;
  while (s <= count)
  {
    MessageBox.Show(SetName);
    s++;
  }

【问题讨论】:

    标签: c# mysql database


    【解决方案1】:

    逻辑错误。

    while (myReader.Read())
    

    用于从数据集中读取每一行数据。

    而你却显示了结果 --> MessageBox.Show(SetName); 在完成 myReader.Read() 循环之后,您当然会永远得到最后一个结果,在您的情况下是“3”。

    您应该执行以下操作: 试试看

    if (myReader.HasRows)
    {
        while (myReader.Read())
        {
            string SetName = myReader.GetString("set_number");
            MessageBox.Show(SetName);
        }
    }
    

    【讨论】:

      【解决方案2】:
      while (myReader.Read())
      {
        count = count + 1;
      }
      
      if (count > 0)
      {
        string SetName = myReader.GetString("set_number");      
        ...
      

      在您的代码中,您只能从最后一行获取 set_number。

      试试下面的。

      while (myReader.Read())
      {
        string SetName = myReader.GetString("set_number");
        MessageBox.Show(SetName);
        count = count + 1;
      }
      

      【讨论】:

        猜你喜欢
        • 2011-07-21
        • 2012-05-03
        • 1970-01-01
        • 2013-02-26
        • 2023-03-21
        • 1970-01-01
        • 2019-11-19
        相关资源
        最近更新 更多