я получаю эту ошибку, но не знаю почему, я получаю ее здесь: Label1.Text = fgmail.ToString (); а вот полный код:
string st = this.pfun.Text;
string sqlstr2 = "select * from hsinfo WHERE rname='" + st + "'";
OleDbCommand cmd = new OleDbCommand(sqlstr2, DBFunction.GenerateConnection("DBS.accdb"));
OleDbDataReader reader = cmd.ExecuteReader();
string fgmail;
while (reader.Read())
{
fgmail = reader[1].ToString();
}
Label1.Text = fgmail.ToString();
fgmail
равнымreader[1]
для каждого результата, что означает, что когда вы закончите,fgmail
получит свое значение из последней строки. В таком случае зачем перебирать их все, если вам нужно только одно значение? В вашем запросе также нет ORDER BY, поэтому, если есть несколько результатов, нельзя сказать, какой из них вы получите. Если вы ожидаете, что будет только один результат, возможно, измените запрос, чтобы выбрать один столбец (неSELECT *
) и использоватьExecuteScalar
вместо читателя. - person Scott Hannen   schedule 25.06.2019if (reader.Read())
вместоwhile (reader.Read())
. - person LarsTech   schedule 25.06.2019