ADO SqlReader在read()=true后失败:在没有数据时尝试读取无效

本文关键字:数据 无效 读取 失败 read SqlReader true ADO | 更新日期: 2023-09-27 18:18:35

我有以下一段代码(在一些答案后修改):

  String sql = "SELECT invoice_pk FROM invoices WHERE invoice_number = " + InvoiceNumberLabel.Text;
  SqlCommand cmd = new SqlCommand(sql, invoiceHeaderOnOSDconn);
  SqlDataReader invoiceResult = cmd.ExecuteReader();
  if (invoiceResult.HasRows)
  {
     if (invoiceResult.Read())
     {  // As Rahul suggested (even though the post is now deleted) I added this third check and it worked
        if (invoiceResult["invoice_pk"] != DBNull.Value)
        { 
           String invoice_pk = invoiceResult["invoice_pk"].ToString();
        }
     }
     invoiceResult.Close();
  }

据我所知,它不应该失败,因为我正在仔细检查结果,首先是"HasRows",然后是"Read()"。现在,虽然代码可以工作,但我比以前更困惑,因为使用相同的值它开始工作。

谁能告诉我为什么?

ADO SqlReader在read()=true后失败:在没有数据时尝试读取无效

尝试invoicerresult . getstring()与列idx或列名。