connection();
SqlCommand com = new SqlCommand("getPassword", con);
com.CommandType = CommandType.StoredProcedure;
com.Parameters.Add("@Email",SqlDbType.NVarChar, 100). Value = obj.Email;
con.Open();
var result = com.ExecuteScalar();
if(result != null)
MessageBox.Show("Password = " + result.ToString();
con.Close();
ExecuteScalar는 명령과에 의해 검색된 첫 번째 행의 첫 번째 열을 반환 SqlCommand.ExecuteScalar을 당신은 SqlDataAdapter를 필요하지 않습니다하지만 당신은 그냥 사용 쿼리가이 조건에 적합합니다. 그러나 쿼리가 결과를 생성하지 않으면 ExecuteScalar가 NULL을 반환 할 수 있으므로 항상 사용하기 전에 결과를 null 값에 대해 테스트해야합니다.
또 다른 문제는 사용하기 좋은 이유가없는 한 이러한 간단한 일상 작업에 대한 저장 프로 시저를 피하기를 권장합니다. AddWithValue 대신 Add를 사용하고 매개 변수의 정확한 크기를 지정하면 최적화 된 쿼리를 만들 수있는 충분한 힌트가 SQL Optimizer에 제공됩니다.
마지막으로 암호를 일반 텍스트로 저장/반환하는 것은 매우 큰 보안 위험으로 간주됩니다. 이 질문에서 설명한 것처럼 안전한 방법을 사용해보십시오 : Best way to store passwords in a database