C# 在会话asp.net中嵌入sql查询

C# 在会话asp.net中嵌入sql查询,c#,sql,asp.net,session,C#,Sql,Asp.net,Session,我有一个问题,就是在会话中嵌入sql查询。我想用sql查询加载页面。如果用户有超过5条记录,则抛出消息。我该怎么做?我的问题如下。感谢您的回复 我的页面是这样加载的 protected void Page_Load(object sender, EventArgs e) { if(Session["User"] != null) { user = Session["User"] as User; }

我有一个问题,就是在会话中嵌入sql查询。我想用sql查询加载页面。如果用户有超过5条记录,则抛出消息。我该怎么做?我的问题如下。感谢您的回复

我的页面是这样加载的

 protected void Page_Load(object sender, EventArgs e)
    {
        if(Session["User"] != null)
        {
            user = Session["User"] as User;

        }
        else
        {
            pnlgiris.Visible = false;
            ScriptManager.RegisterStartupScript(this, this.GetType(), "redirect",
                      "alert('Please login first'); window.location='" +
                      Request.ApplicationPath + "Home.aspx';", true);

        }

    }
我想将此查询嵌入会话中

SELECT  Users.UserName, COUNT(Book.BookName) 
FROM Users
JOIN Book ON Users.UserId = Book.UserId  
GROUP BY Users.UserName 
HAVING COUNT(*) < 5;
登录时的用户对象

  User u = new User();
                u.UserId = Convert.ToInt32(dr["UserId"]);
                u.UserName = dr["Name"] != DBNull.Value ? dr["Name"].ToString() : string.Empty;
                u.UserName = dr["Surname"] != DBNull.Value ? dr["Surname"].ToString() : string.Empty;
                u.UserName = dr["UserName"] != DBNull.Value ? dr["UserName"].ToString() : string.Empty;
                u.Email = dr["Email"] != DBNull.Value ? dr["Email"].ToString() : string.Empty;
                Session["User"] = u;
                Response.Redirect("~/Home.aspx");

您可以使用如下所示的StringBuilder:

    var sb = new StringBuilder();
    sb.Append("SELECT Users.UserName,");          
    sb.Append("COUNT(Book.BookName) ";
    sb.Append("FROM Users ");
    sb.Append("JOIN Book ON Users.UserId = Book.UserId ");
    sb.Append("GROUP BY Users.UserName ");
    sb.Append("HAVING COUNT(*) < 5;");
    Session["SomeSql"] = sb.ToString();
var sb=new StringBuilder();
sb.Append(“选择Users.UserName”);
某人追加(“计数(书名)”;
sb.追加(“来自用户”);
sb.Append(“JOIN Book ON Users.UserId=Book.UserId”);
sb.追加(“按用户分组。用户名”);
某人追加(“有计数(*)<5;”;
会话[“SomeSql”]=sb.ToString();

这是一种糟糕的字符串生成方法。如果字符串是文本,则只需声明它。即使您对文本使用
+
运算符,编译器也会将其组合以避免连接。您肯定是一个新手开发人员,因为大家都知道使用+运算符会为每个连接创建一个新字符串,而StringBui相反,新手开发人员认为
StringBuilder
比进行少量字符串连接更有效。
string.Format
string.Concat
+
在某种程度上都更有效。
StringBuilder
适用于存在enoug的情况您的答案不仅给出了错误的连接建议,甚至没有回答问题。
    var sb = new StringBuilder();
    sb.Append("SELECT Users.UserName,");          
    sb.Append("COUNT(Book.BookName) ";
    sb.Append("FROM Users ");
    sb.Append("JOIN Book ON Users.UserId = Book.UserId ");
    sb.Append("GROUP BY Users.UserName ");
    sb.Append("HAVING COUNT(*) < 5;");
    Session["SomeSql"] = sb.ToString();