-2

ユーザー名とパスワードを使用してログインしています。これはDALのコードです。

public static SqlDataReader login(SchoolBAL bal)
 {
  SqlConnection con = DBConnection.OpenConnection();
  try
   {
   int i;
   SqlCommand cmd1 = new SqlCommand("login", con);
   cmd1.CommandType = CommandType.StoredProcedure;
   cmd1.Parameters.AddWithValue("@username", bal.UserName);
   cmd1.Parameters.AddWithValue("@password", bal.Password);
   SqlDataReader dr = cmd1.ExecuteReader();
   return dr;
   }catch (Exception)
    {
      throw;
    }
 }

しかし、ここで整数を返したいのですが、どうすればよいですか?

編集::

    Create procedure login
(@username varchar (50),@password varchar (50))

as
begin
select UserName,password from tblLogin where UserName=@username and password=@password
end
4

3 に答える 3

1

の参照を返していますがDataReader、メソッドの戻りタイプはですint。メソッドの戻りタイプを変更します。

public static bool login(SchoolBAL bal)
{
  bool isFound=false;
  using(SqlConnection con = DBConnection.OpenConnection())
   {
    using(SqlCommand cmd1 = new SqlCommand("login", con))
    {
     cmd1.CommandType = CommandType.StoredProcedure;
     cmd1.Parameters.AddWithValue("@username", bal.UserName);
     cmd1.Parameters.AddWithValue("@password", bal.Password);
     con.Open(); 
     SqlDataReader dr = cmd1.ExecuteReader();
     if(dr.Read())
       isFound=true;
     dr.Close();
     con.Close();
     }
    }
  return isFound;
}
于 2012-09-27T09:26:22.760 に答える
1

sprocからを返したい場合は、ExecuteScalar-intを使用してその値を返します。

しかし、あなたはおそらくこのデザインについて考える必要があります、その価値は誰にとっても何を意味しますか?

たぶん、Enumまたはtrue/falseを使用します。

于 2012-09-27T09:28:14.870 に答える
0
public static int login(SchoolBAL bal)
   {
       SqlConnection con = DBConnection.OpenConnection();
       try
       {
           int i;
           SqlCommand cmd1 = new SqlCommand("login", con);
            cmd1.CommandType = CommandType.StoredProcedure;
           cmd1.Parameters.AddWithValue("@username", bal.UserName);
           cmd1.Parameters.AddWithValue("@password", bal.Password);
           i = cmd1.ExecuteScalar();
           return i;              

       }
       catch (Exception)
       {

           throw;
       }
   }
于 2012-09-27T09:29:39.873 に答える