正しい資格情報を使用して以下のメソッドを呼び出すと仮定します。
private bool Connect(string username, string password)
{
string CONNSTRING = "Provider = MSDAORA; Data Source = ISDQA; User ID = {0}; Password = {1};";
OleDbConnection conn = new OleDbConnection();
string strCon = string.Format(CONNSTRING, username, password);
conn.ConnectionString = strCon;
bool isConnected = false;
try
{
conn.Open();
if (conn.State.ToString() == "Open")
isConnected = true;
}//try
catch (Exception ex)
{
lblErr.Text = "Connection error";
}//catch
finally
{
conn.Close();
}//finally
return isConnected;
}
以下の方法で接続を正常に開きました。
private bool ValidateUserCode(string usercode)
{
UserAccountDefine def = new UserAccountDefine();
UserAccountService srvc = new UserAccountService();
UserAccountObj obj = new UserAccountObj();
bool returnVal = false;
bool isValid = Connect(def.DB_DUMMY_USERCODE, def.DB_DUMMY_PASSWORD);
if (isValid)
{
obj.SQLQuery = string.Format(def.SQL_LOGIN, usercode.ToLower(), DateTime.Now.ToString("MM/dd/yyy"));
DataTable dt = srvc.Execute(obj, CRUD.READALL);
if (dt.Rows.Count == 1)
{
returnVal = true;
}
}
return returnVal;
}
ValidateUserCode()
問題は、メソッドで接続ステータスをどのように判断できるかです。後で閉じるにはどうすればよいですか?
注: 文字列変数を明示的に宣言しているUserAccountDefine();
ので、心配する必要はありません。
OleDbConnection conn
私はすでに to内で new を宣言しようとしValidateUserCode()
ましたが、conn.State
常に返され"Closed"
ます。
アップデート
2 層セキュリティ機能を備えたシステムを使用しています。1 つ目はアプリケーション、2 つ目はデータベースです。ユーザーがアプリケーションにログインする場合、ユーザー名とパスワードはデータベースへのログインにも使用されます。ここでのシナリオは、ユーザーが自分のパスワードを忘れた場合で、ユーザーの(データベースに保持されている)fullname
とemail
を判別できません。contact
私はちょうど彼を知っていusercode
ます。連絡先の詳細を確認するには、 を使用してアクティブな接続を開く必要がありDUMMY_ACCOUNT
ます。
データベース内にパスワードを保持することは決してないことに注意してください。