2016-05-20 2 views
-1

セッション内にSQLクエリを埋め込むという問題があります。私はSQLクエリでページをロードしたい。ユーザーが5つ以上のレコード数を持つ場合、メッセージをスローします。これどうやってするの?私の質問は以下のようです。レスポンスありがとう。そのセッション内にSQLクエリを埋め込むasp.net

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); 

     } 

    } 

よう

マイページのロードには、私はセッション内でこのクエリを埋め込みたいです。これは、構築する恐ろしい方法です

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(); 

答えて

-1

ログイン

上の私のユーザークラス

public class User 
{  
     public int UserId { get; set; } 
     public string Name { get; set; } 
     public string Surname { get; set; } 
     public string UserName { get; set; } 
     public string Email { get; set; } 
} 

UserオブジェクトあなたはこのようにStringBuilderを使用することができます文字列。あなたの文字列がリテラルの場合、それを宣言するだけです。リテラルに対して `+`演算子を使用しても、コンパイラは連結を避けるためにそれを結合します。

+0

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"); 
Crowcoder

+0

+演算子を使用すると、すべての連結に対して新しい文字列が作成され、StringBuilderでは連結文字列が作成されないことは誰もが知っているので、あなたは確かに初心者の開発者です。 – Gregg

+0

[連結は、ある文字列を別の文字列の末尾に追加する処理です。 +演算子を使用して文字列リテラルまたは文字列定数を連結すると、コンパイラは単一の文字列を作成します。実行時連結が発生しません。](https://msdn.microsoft.com/en-us/library/ms228504.aspx) – Crowcoder

関連する問題