【发布时间】:2011-05-30 17:26:58
【问题描述】:
我正在从数据读取器运行 if else 语句来查询表数据并激活/取消激活页面上的某些控件。我实现了一个 using 语句来在我关闭块时自动关闭连接和阅读器,但我仍然在我的每个 if else 语句中收到阅读器关闭错误。少了什么东西?代码如下:
string comnt = "SELECT StatusId FROM Submission WHERE SubmissionId =" + x;
using (SqlConnection editConn = new SqlConnection(connectionString))
{
editConn.Open();
using (SqlCommand statCmd = new SqlCommand(comnt, editConn))
{
SqlDataReader dr = statCmd.ExecuteReader();
dr.Read();
if (dr.GetInt32(0) > 0)
{
PanelComment.Visible = true;
PanelQuote.Visible = false;
LnbFid.Visible = false;
LnbCrim.Visible = false;
LnbEo.Visible = false;
LnbEpl.Visible = false;
LnbNot.Visible = false;
LnbPriv.Visible = false;
LnbPub.Visible = false;
}
else
{
PanelComment.Visible = false;
}
}
【问题讨论】:
-
您确定 reader 返回行吗?它有“HasRows”属性在阅读之前检查
-
“x”代表什么?它是代表字符串的字符串吗?一个号码?你应该习惯使用参数,连接字符串来构建 SQL 查询是危险的,特别是如果 'x' 是用户依赖的。
-
被查询的字段不会接受空值,所以肯定是返回行@vityanya,而@InBetween,'x'是一个字符串,用来存储页面上jquery的提交id。
标签: c# asp.net sql-server visual-studio datareader