C# 在会话asp.net中嵌入sql查询
我有一个问题,就是在会话中嵌入sql查询。我想用sql查询加载页面。如果用户有超过5条记录,则抛出消息。我该怎么做?我的问题如下。感谢您的回复 我的页面是这样加载的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; }
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();