2012-11-20 2 views
-1

가능한 중복 전달하는 방법 : 나는의 WinForm 응용 프로그램에 로그인을 검증하기 위해 다음 코드를 사용하고
passing data between two forms using properties로그인을 확인하고 사용자 ID를

합니다. 나는 또한 사용자 ID를 반환하는 것을 수정하는 것이 어떻게

Create Proc [dbo].[prcLoginv] 
( 
@Username VarChar(50), 
@UPassword varChar(50), 
@OutRes int OUTPUT 
) 
AS 
set @OutRes = (SELECT count(*) FROM [dbo].Log_Users 
WHERE Username = @Username And [Password] = @UPassword) 
if(@OutRes = 1) 

begin 
set @OutRes = 1--Login is Correct 
end 
else 
begin 
set @OutRes = 0 --Bad login 
end 

그래서 난 다른 형태로 전달할 수 있습니다 다음과 같이

public int Validate_Login(String Username, String Password) 
     { 

      //SqlConnection con = new SqlConnection(@"User id=judgment_day;Password=Kit$hen;Server=216.40.232.82, 2153;Database=new_judgment-system"); 
      SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["rawr"].ConnectionString); 
      SqlCommand cmdselect = new SqlCommand(); 
      cmdselect.CommandType = CommandType.StoredProcedure; 
      cmdselect.CommandText = "[dbo].[prcLoginv]"; 
      cmdselect.Parameters.Add("@Username", SqlDbType.VarChar, 50).Value = Username; 
      cmdselect.Parameters.Add("@UPassword", SqlDbType.VarChar, 50).Value = Password; 
      cmdselect.Parameters.Add("@OutRes", SqlDbType.Int, 4); 
      cmdselect.Parameters["@OutRes"].Direction = ParameterDirection.Output; 
      cmdselect.Connection = con; 
      int Results = 0; 

      try 
      { 
       con.Open(); 
       cmdselect.ExecuteNonQuery(); 
       Results = (int)cmdselect.Parameters["@OutRes"].Value; 
      } 
      catch (SqlException ex) 
      { 
       lblMessage.Text = ex.Message; 
      } 
      finally 
      { 
       cmdselect.Dispose(); 

       if (con != null) 
       { 
        con.Close(); 
       } 
      } 
      return Results; 
     } 

     protected void btnlogin_Click(object sender, EventArgs e) 
     { 
      int Results = 0; 


      if (txtUsername.Text != null && txtPassword.Text != null) 
      { 



       Results = Validate_Login(txtUsername.Text, txtPassword.Text); 



       if (Results == 1) 
       { 



        lblMessage.Text = "Login is Good"; 

        this.Hide(); 
        frmSwitch frm = new frmSwitch(); 
        frm.Show(); 


       } 



       else 
       { 



        lblMessage.Text = "Invalid Login"; 

        lblMessage.ForeColor = System.Drawing.Color.Red; 



       } 



      } 



      else 
      { 



       lblMessage.Text = "Please make sure that the username and the password is Correct"; 



      } 
     } 

SP에있다. 이 ID를 사용하여 누가 어떤 파일을 작업하고 있는지 보여줄 필요가 있습니다. 쿼리가 여러 행이있는 경우 그것은 당신에게 마지막을 제공합니다, 당신은 0 얻을 수없는 행을 반환하지 않는 경우 대신

set @OutRes = (SELECT count(*) FROM [dbo].Log_Users 
WHERE Username = @Username And [Password] = @UPassword) 

+0

userId를 반환하기 위해 저장 프로 시저를 수정해야합니까, 아니면 양식간에 데이터를 전달하는 방법을 묻고 있습니까? userId를 반환하면 1이나 0을 전달하지 않고 userId 또는 -1과 같은 것을 전달하면됩니다. –

답변

1

당신은

select @OutRes = userid from x where blah. 

을 시도 할 수 있습니다.

+0

이것에 대해서는 절대로하지 않으며 이것이 내가 한 것입니다. 감사합니다 마이크! 나는 항상 이런 것들을 생각한다. /. – korrowan

관련 문제