가능한 중복 전달하는 방법 : 나는의 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)
의
userId를 반환하기 위해 저장 프로 시저를 수정해야합니까, 아니면 양식간에 데이터를 전달하는 방법을 묻고 있습니까? userId를 반환하면 1이나 0을 전달하지 않고 userId 또는 -1과 같은 것을 전달하면됩니다. –