2011-11-09 16 views
0

私が使用しているコードは以下の通りです。これはSessionを使う正しい方法ですか?また、私がSessionを行った場合、明確にするために私はcompanyIDとuserIDをどのように呼ぶのでしょうか。 Session.ContentsかSession.Keysか?これはセッションを使用した初めてのことですが、私はhttpcontact.current.userを使用してこれにアクセスしていますが、データの各部分にアクセスする方法がわかりません。aspセッションの適切な使用と可能なインターフェイスの使用

ありがとうございます!

MySqlConnection cn = new MySqlConnection("Server=localhost;Database=users; User=root;Password=00;"); 
    cn.Open(); 

    string storedProcedureName = "VLID"; 
    MySqlCommand cmd = new MySqlCommand(storedProcedureName, cn); 
    cmd.CommandType = CommandType.StoredProcedure; 
    cmd.Parameters.Add("@userName", this.Login1.UserName); 
    cmd.Parameters.Add("@passwordID", this.Login1.Password); 
    MySqlDataReader dr = cmd.ExecuteReader(); 

    if (dr.HasRows) 
    { 
     dr.Read(); 
     string userID = dr["userID"].ToString(); 

     string companyID = dr["CompanyID"].ToString(); 
     string sessionID = Session.SessionID.ToString(); 
     Session.Add(companyID, "companyID"); 
     Session.Add(userID, "userID"); 
     e.Authenticated = true; 
     Response.Redirect("index.html"); 
     // Event Authenticate is true 
    } 
+0

は、なぜあなたは、文字列セッションIDの変数を宣言したのですか?あなたはどこでもそれを使用していません。私は、会社のID、ユーザーID、およびその他の情報を保持し、セッションに追加するユーザープロファイル構造を作成していました。それは情報を管理する別の方法です。 –

答えて

3

あなたは少し後方Session.Addメソッドを呼び出している:

Session.Addは、その順序で、キーと値をとります。そのため、あなたのコードにしたい:

Session.Add("companyID",companyID); 
Session.Add("userID",userID); 

しかし、その代わりに、あなたも、これを行うことができます:

​​

を次に、あなたが以前に格納されたユーザIDの値を取得する必要がある時はいつでも、あなたが行うことができます:

補足として、私はあなたがやっているときにUIコードにデータアクセスコードを混ぜてはいけません。

データベースからデータを取得するコードは、データアクセスレイヤー(DAL)に移動する必要があります。

そして、あなたは、データベース接続をインスタンス化するとき、それがスコープ外になると、適切に配置されるように、常にusing文で囲み:

using(MySqlConnection cn = new MySqlConnection("Server=localhost;Database=users; User=root;Password=00;")) 
{ 
    cn.Open(); 
    //rest of the code 
} 
+0

がわかりました。私がSession.keysを使用して呼び出す場合は、インタフェースを正しく作成する必要がありますか?インターフェイスにセッションを追加する方法の例がありますか。私はそれを呼びたい毎回の正確なSession ["どこにでも"]を入力する必要はありません。 –

+0

@Mike 'セッションにセッションを追加する 'とはどういう意味ですか? 'Session'は基本的にキーと値のペアを持つ' Dictionary'です。 – Icarus

+0

私は、このセッションをHttpContext.Currentを使用してこのセッションを参照すると、セッションを使用するのか、Userを使用するのかを問うことができます。ストアドプロシージャのパラメータでuserIdを使用する場合は、ユーザーIDを追加しましたか? –