この場合、単一の列の値を取得しています。そのような状況ではExecuteScalar()
を使用できます。次に、コマンドの実行は次のようになります:
string passwordStr= (string)com.ExecuteScalar();
のでgetPassword
メソッドのシグネチャも、その戻り値の型がList<StaffLogin>
のために代わりに文字列となり、変更されます。新しいシグネチャは次のようになります。あなたはSqlDataAdapterオブジェクトを必要としませんが、あなただけのコマンドによって取得された最初の行の最初の列を返し、あなたは、ExecuteScalar SqlCommand.ExecuteScalar
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();
を使用
public string getPassword(StaffLogin obj)
{
connection();
string passwordStr = String.Empty;
using (SqlCommand com = new SqlCommand("getPassword", con))
{
com.CommandType = CommandType.StoredProcedure;
com.Parameters.AddWithValue("@Email", obj.Email);
passwordStr = (string)com.ExecuteScalar();
}
return passwordStr;
}