データベースビューから会社固有のデータを取得し、その情報を画面に表示することになっているC#にこの関数があります。この関数の catch ステートメントは、何かが失敗した場合にエラー時にポップアップ メッセージを表示します。データベースに AGENT_NAMES ビューを持たないクライアント サーバーでこのコードを実行すると、関数は次のエラーを表示します:「現時点では接続できません」。代わりに、ビューがデータベースに存在するかどうかを判断し、存在しない場合は適切にエスケープする関数が必要です。どうすればいいですか?
編集: 使用されている DBMS は Microsoft SQL Server です
private string getAgencyInfo()
{
string agentNo = null;
string agencyInfo = "";
try
{
agentNo = Session["Variable_AgencyID"].ToString();
}
catch
{
this.lblPopMsg.Text = "Connection timed out, Please Login";
this.ModalPopupExtender1.Show();
return agencyInfo;
}
using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["ARConnectionString"].ToString()))
{
try
{
cn.Open();
}
catch
{
clearLabels();
this.txtZipCode.Visible = false;
this.lblZipCode.Visible = false;
this.lblPopMsg.Text = "Unable to make a Connection at this Time";
this.ModalPopupExtender1.Show();
this.txtPolicyNo.Focus();
return agencyInfo;
}
try
{
string agentData = "SELECT AGENT_NAMES.NAME FROM AGENT_NAMES WHERE AGENT_NAMES.AGENT_NO = @agentNo";
SqlCommand command = new SqlCommand(agentData, cn);
command.Parameters.Add(new SqlParameter("agentNo", agentNo));
SqlDataReader dataReader = command.ExecuteReader();
DataTable dataTable = new DataTable();
dataTable.Load(dataReader);
if (dataTable.Rows.Count != 0)
agencyInfo = dataTable.Rows[0][0].ToString() + " — Agent #" + agentNo;
return agencyInfo;
}
catch
{
clearLabels();
this.txtZipCode.Visible = false;
this.lblZipCode.Visible = false;
this.lblPopMsg.Text = "Unable to make a Connection at this Time";
this.ModalPopupExtender1.Show();
this.txtPolicyNo.Focus();
return agencyInfo;
}
}
}