0

呼び出されたストアド プロシージャがあり、switch ステートメントで使用できるようにDecryptpaswd、プロシージャの結果を呼び出された変数に代入したいと考えています。query

これどうやってするの?

public void ValidateUser()
{
    SqlConnection conn = new SqlConnection(var3);

    String sql= "Decryptpaswd";
    SqlCommand cmd = new SqlCommand(sql, conn);
    cmd.CommandType = CommandType.StoredProcedure;
}

try
{
    conn.Open();

    **switch (query)**
    {
        case "AA": Response.Redirect("Home");
                   break;

        case "BB": Response.Redirect("Home1");
                   break;

        case "CC": Response.Redirect("Home2");
                   break;

        default: Response.Redirect("LogIn.aspx");
                 break;
    }
}

編集: Stored Proc は、UserName と Password の 2 つを受け入れます。入力された Username とパスワードが正しい場合、Rolename が返されます。したがって、この rolename は Case ステートメントで使用されます。

CREATE PROCEDURE [dbo].[Decryptpaswd] 
    (
    @Username varchar(10),
    @Pasword varchar(256)
    )
    as

    SELECT 
     Rolename FROM Users
        WHERE Username = @Username AND DecryptByCert(----('---'),Pass, @Paswd)= @Pasword
     }
4

1 に答える 1

3

SP が文字列を返す (選択する) ように聞こえますが、その結果で何かをしたい場合は、次のようにします。

string role;
using(SqlConnection conn = new SqlConnection(var3))
using(SqlCommand cmd = new SqlCommand("Decryptpaswd", conn))
{
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.Parameters.AddWithValue("Username", username);
    cmd.Parameters.AddWithValue("Pasword", password);
    conn.Open();
    query = (string)cmd.ExecuteScalar();
}
switch(role) {
   ...
}

また、いくつかのパラメータを に追加することもできますcmd

于 2012-08-17T11:19:24.737 に答える