2017-08-16 8 views
0

私のプロジェクトでDALを使用しようとしていますが、結果を取得してDBから値を取得した後にデータテーブルに追加すると、DALの結果を使用したASP.Netがハンドラに設定されない

ASPXページ:

UserDetails us = new UserDetails(); 

UserHandler Handler = newUserHandler();// Starts 

Handler.GetUserDetails(Email); // comes out 

Display.Text = us.Code; // null 

UserHandler.CS

namespace LoginSystem Handler 
{ 
    public class UserHandler 
    { 
     UserDBAccess UserDb = null; 
     public AspUserHandler() 
     { 
      UserDb = new UserDBAccess(); 

     } 

     // This fuction does not contain any business logic, it simply returns the 
     // list of employees, we can put some logic here if needed 
     public User GetUserDetails(string email) 
     { 
      return UserDb.GetUserDetails(email); 
     } 
    } 
} 

UserDBAccess.CS

public class AspUserDBAccess 
{ 

    public UserDetails GetUserDetails(string Email) 
    { 
     UserDetails AspUser = null; 
     SqlParameter[] parameters = new SqlParameter[] 
     { 
      new SqlParameter("@PUserEmail", Email) 

     }; 
     using (DataTable table = SqlDbHelper.ExecuteParamerizedSelectCommand("GetUserDetails", CommandType.StoredProcedure, parameters)) 
     { 
      if (table.Rows.Count == 1) 
      { 
       DataRow row = table.Rows[0]; 
       AspUser = new UserDetails(); 

       AspUser.Code = row["Code"].ToString(); 

      } 

     } 
     return AspUser; 
    } 



} 

Sqlhelperclass.CS:

internal static DataTable ExecuteParamerizedSelectCommand(string 
        CommandName, CommandType cmdType, SqlParameter[] param) 
    { 
    DataTable table = new DataTable(); 

    using (SqlConnection con = new SqlConnection(conString)) 
    { 
     using (SqlCommand cmd = con.CreateCommand()) 
     { 
      cmd.CommandType = cmdType; 
      cmd.CommandText = CommandName; 
      cmd.Parameters.AddRange(param); 


      try 
      { 
       if (con.State != ConnectionState.Open) 
       { 
        con.Open(); 
       } 

       using (SqlDataAdapter da = new SqlDataAdapter(cmd)) 
       { 
        da.Fill(table); // just "{}" but doesnt say null 

       } 
      } 
      catch 
      { 
       throw; 
      } 
     } 
    } 

    return table; // {} nothing in table 
} 

//

私は再び価値があると思っていますが、決してそれを設定せずにASPXページに戻ります。 UserDetailsはヌル

+0

あなたが_handlerの戻り値を割り当てない場合.GetUserDetails(電子メール); _あなたの_UserDetailsに_あなたの努力の結果であることは決してわかりませんメインコードの変数us_ – Steve

答えて

1

どのようにあなたが実際に代わりにそれを捨てると、あなたは空を割り当てられた変数を見ているあなたのメソッドの戻り値を使用し

var us = Handler.GetUserDetails(Email); 

UserDetails us = new UserDetails(); 
Handler.GetUserDetails(Email); 

の変更について、この方法を持っていますUserDetails to。 UserDb.GetUserDetails戻っ 'UserDetails' は

public User GetUserDetails(string email) 
{ 
    return UserDb.GetUserDetails(email); 
} 

、ない 'ユーザー':

ちなみに、これは奇妙に見える

public UserDetails GetUserDetails(string Email) 
+0

私はそれを試してみるつもりです、これは仕事のコードなので、私はそれを変更していますコードを公開しない別の名前は、正しいことのように感じた。しかし、私はこの記事のコードを変更し始めてから間違いが残っていることを知っていました。 –

+0

感謝しました!!!! –

関連する問題