0

このようなユーザーIDとパスワードを検証するためのストアドプロシージャがあります

PROCEDURE [dbo].[CheckLoginByUserIdAndPassword2]              

@UserId char(15),            
@Password char(40)        
AS                                      
BEGIN                                      
 -- SET NOCOUNT ON added to prevent extra result sets from                                      
 -- interfering with SELECT statements.                                      
 SET NOCOUNT ON;                
    select Name, UserPersonalId, UserId from MSUSERPERSONALINFO    
    where UserId = @UserId  and Password=@Password           
END

しかし、このストアプロシージャにアクセスし、ログインが成功したか失敗したかに関係なく、戻り値を受け取るために、C#(WindowsFormアプリケーション)でどのようなコードを使用する必要があるか考えてみてください。

そのプロシージャを呼び出すためのコードを作成しましたが、それでも戻り値を設定できません。

try
            {
                string sp_name = "dbo.CheckLoginByUserIdAndPassword2";

                SqlConnection SqlCon = new SqlConnection("Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=jdwlrc_db;Data Source=.");
                SqlCon.Open();

                SqlCommand SqlCom = new SqlCommand(sp_name, SqlCon);

                SqlCom.CommandType = CommandType.StoredProcedure;

                SqlCom.Parameters.Add(new SqlParameter("@UserID",nama));
                SqlCom.Parameters.Add(new SqlParameter("@Password",password));

                SqlCom.ExecuteScalar();
                SqlCon.Close();

                return true;
            }


            catch
            {
                return false;
            }

ありがとう..

4

2 に答える 2

0

あなたはこのようなことをすることができます。

次のようにストアドプロシージャを変更します

SELECT UserId FROM MSUSERPERSONALINFO WHERE UserId = @UserId AND Password=@Password

そしてコードで

object result = sqlCom.ExecuteScalar();
if(result != null && int.Parse(result.ToString()) > 1)
{
//Authenticated successfully.
}
else
{
//Authentication failed 
}

お役に立てば幸いです。

于 2012-04-17T01:02:37.833 に答える
0

すべてのデータベース通信を行うために、別のプロジェクト(クラスライブラリ)を作成することをお勧めします。それがデータアクセス層である必要があります。Windowsアプリケーションは、データベースに直接接続されていない、ある種のシンクライアントである必要があります。次に、Windowsプロジェクトで、作成したクラスライブラリへの参照を追加します。参照が追加されると、UIプロジェクトからクラスライブラリの関数にアクセスできるようになります。

ユーザー名とパスワードを入力してログインボタンをクリックすると、テキストボックスから値を読み取り、関連データ(この場合はユーザー名とパスワード)を渡してクラスライブラリの関数を呼び出します。応答を取得し、次に何をするかを決定します。

データアクセスコードに関してはusing、接続がまだ開いているかどうかを心配する必要がないように、コードをステートメント内にラップする傾向があります。

bool isValidUser=false;
try
{
 string sp_name = "dbo.CheckLoginByUserIdAndPassword2";
 using(SqlConnection SqlCon = new SqlConnection("Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=jdwlrc_db;Data Source=."))
 {
   SqlCommand SqlCom = new SqlCommand(sp_name, SqlCon);
   SqlCom.CommandType = CommandType.StoredProcedure;
   SqlCom.Parameters.AddWithValue("@UserID", nama);
   SqlCom.Parameters.AddWithValue("@Password", password);
   SqlCon .Open();
   using(SQlDataReader objReader=SqlCom.ExecuteReader())
   {
      if(objReader.Read()
      {
         isValidUser=true;
         //You can read the values from reader if you want for future use like storing in session etc
      }
   }
   SqlCon.Close();
 }
}
catch(Exception ex)
{
   //Log error 
}
于 2012-04-17T01:17:59.483 に答える