我遇到了一个问题,我遇到了异常,我不确定如何处理它,就像我想的那样。
在reader = command.ExecuteReader()
我收到以下异常消息:
类型为"System.Data.SqlClient.SqlException"的异常发生在 System.Data.dll,但未在用户代码中处理。
没有任何数据可以提取,这很好,这就是为什么我添加了 if(reader.HasRows)
语句,以防页面加载时没有数据。
我应该如何处理这个问题?
缩写代码如下:
protected void Page_Load(object sender, EventArgs e)
{
using (SqlConnection connection = new SqlConnection(
ConfigurationManager.ConnectionStrings["LocalConnection"].ConnectionString))
{
string selectSql = "SELECT tb1,tb2 FROM Stuff INNER JOIN User ON " +
"User.Stuff_FK=Stuff.ID";
using (SqlCommand command = new SqlCommand(selectSql, connection))
{
// populate already existing data
SqlDataReader reader;
connection.Open();
reader = command.ExecuteReader();
if (reader.HasRows)
{
while (reader.Read())
{
TB1.Text = reader["tb1"].ToString();
TB2.Text = reader["tb2"].ToString();
}
reader.Close();
}
else
{
connection.Close();
}
}
}
}
User
是一个保留关键字,您需要将其包装在[]
中:
string selectSql = "SELECT tb1,tb2 FROM Stuff INNER JOIN [User] ON [User].Stuff_FK=Stuff.ID";
出于这个原因,我会选择一个不同的表名。顺便说一下,Stuff
也是一个 T-SQL 函数,但如果该表存在,它应该无论如何都可以工作。