《C#Web应用程序入门经典》学习到第五章碰到的问题
各位高手,正在学习这本书,学到第五章的search.aspx的例子的时候,
按照教材的程序输入时出现下列编译错误,实在不知问题出在哪里,请帮忙解决一下。
单击 new search搜索时出现下列错误
第 2 行: 'User ' 附近有语法错误。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Data.SqlClient.SqlException: 第 2 行: 'User ' 附近有语法错误。
private void btnSearch_Click(object sender, System.EventArgs e)
{
StringBuilder sql = new StringBuilder();
// Limit maximum resultset size
sql.Append(@ "SELECT TOP ");
sql.Append(ConfigurationSettings.AppSettings[ "searchLimit "]);
sql.Append(@ "
[User].UserID, [User].FirstName, [User].LastName,
Place.PlaceID, Place.Name AS PlaceName,
PlaceType.Name AS PlaceType, PlaceType.TypeID,
TimeLapse.Name AS LapseName, TimeLapse.YearIn,
TimeLapse.MonthIn, TimeLapse.YearOut, TimeLapse.MonthOut
FROM [User]
LEFT OUTER JOIN TimeLapse ON
TimeLapse.UserID = [User].UserID
LEFT OUTER JOIN Place ON
Place.PlaceID = TimeLapse.PlaceID
LEFT OUTER JOIN PlaceType ON
Place.TypeID = PlaceType.TypeID
");
// Build the WHERE clause now
StringBuilder qry = new StringBuilder();
if (txtFirstName.Text != String.Empty)
{
qry.Append( "[User].FirstName LIKE '% ");
qry.Append(txtFirstName.Text).Append( "% ' AND ");
}
if (txtLastName.Text != String.Empty)
{
qry.Append( "[User].LastName LIKE '% ");
qry.Append(txtLastName.Text).Append( "% ' AND ");
}
if (cbPlace.SelectedItem.Value != "0 ")
{
qry.Append( "[Place].PlaceID = ' ");
qry.Append(cbPlace.SelectedItem.Value).Append( " ' AND ");
}
if (cbType.SelectedItem.Value != "0 ")
{
qry.Append( "[PlaceType].TypeID = ' ");
qry.Append(cbType.SelectedItem.Value).Append( " ' AND ");
}
if (txtYearIn.Text != String.Empty)
{
qry.Append( "TimeLapse.YearIn = ");
qry.Append(txtYearIn.Text).Append( " AND ");
}
if (txtYearOut.Text != String.Empty)
{
qry.Append( "TimeLapse.YearOut = ");
qry.Append(txtYearOut.Text).Append( " AND ");
}
string filter = qry.ToString();
if (filter.Length != 0)
{
sql.Append( " WHERE ");
// Add the filter without the trailing AND
sql.Append(filter.Remove(filter.Length - 4, 4));
}
SqlDataAdapter ad = new SqlDataAdapter(sql.ToString(), cnFriends);
dsResults = new DataSet();
ad.Fill(this.dsResults, "User ");
// Adjust label for results
if (dsResults.Tables[ "User "].Rows.Count <
Convert.ToInt32(ConfigurationSettings.AppSettings[ "searchLimit "]))
{
lblLimit.Text = "Found " +
dsResults.Tables[ "User "].Rows.Count.ToString() +
" users matching your criteria on initial search. ";
}
else
{
lblLimit.Text = "You 're working with the first " +
ConfigurationSettings.AppSettings[ "searchLimit "] +
@ " results. If you 're looking for someone who 's not in this list,
please search again with a more precise search criterion. ";
}
// Place results in session state
Session[ "search "] = dsResults;
BindFromSession();
}
[解决办法]
ConfigurationSettings.AppSettings[ "searchLimit "]这个是什么,如果也是检索内容的话,看看是不是[User].UserID前少了个“,”,设断点看一下最后的SQL语句,直接用查询分析器执行一下看看吧