我遇到了一个问题,我遇到了异常情况而且我不知道如何处理它,就像我想的那样。
在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();
}
}
}
}
答案 0 :(得分:4)
User
是reserved keyword,您需要将其打包在[]
中:
string selectSql = "SELECT tb1,tb2 FROM Stuff INNER JOIN [User] ON [User].Stuff_FK=Stuff.ID";
出于这个原因,我会选择一个不同的表名。顺便说一下,Stuff
也是一个T-SQL函数,但如果该表存在,它仍然可以工作。