-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

如果你想int从你的存储过程中返回,那么使用ExecuteScalar - 并返回那个值。

但是你也许应该考虑一下这个设计,这个价值对任何人意味着什么?

也许使用一个Enum甚至是真/假。

于 2012-09-27T09:28:14.870 回答
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 回答
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 回答