私のコード:
string sqlQuery1 = "select * from employees where depid=6";
SqlDataReader Dr1 = dbconn.RunQueryReturnDataReader(sqlQuery1);
if(Dr1.read()) { //or if (Dr1["empname"] != DBNull.Value)
while (Dr1.Read())
{
Label1.Text = Dr1["empname"].ToString();
Label2.Text = Dr1["empdes"].ToString();
...
}
Dr1.Close();
}
else {
Label1.text = "defaultValue";
Label2.text = "defaultValue";
...
}
SqlDataReader に表示するレコードがないことを確認したいだけです。レコードがない場合、ラベルは私が事前に割り当てたデフォルト値を表示するか、ラベルにレコード表示データリーダー値がある場合。(SqlDataReader に 1 つの recode があるか、または norecord のみがあると仮定します)
最初のデータリーダーがRowを持っているかどうかを確認するにはどうすればよいですか?
上記のコードのように2つの方法を試しました。
if(Dr1.read())
- この方法でうまくいきます。しかし、If
ステートメントを実行した後は、 read() がポインターを増加させるため、ラベルに表示する値がありません。その結果、label1、Label2..何も表示されません。if (Dr1["empname"] != DBNull.Value)
この方法では、Sqldatareader に norow がある場合に例外が生成されます。
error: System.InvalidOperationException: Invalid attempt to read when no data is present
私を助けてください。TX