如何检查哪个存储过程查询正在运行Sql Server Asp.Net?

时间:2013-05-02 07:12:49

标签: c# asp.net sql-server insert sql-server-2008-r2

我试图一次运行一个查询它检查用户名如果​​不是exsis那么它插入那个值我想知道我怎么知道代码背后的代码哪个查询它执行我代码背后的代码是,< / p>

 public int CreateUser(string UserName,string Pwd)
        {
            cmd = new SqlCommand("CreateUser", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter name = cmd.Parameters.Add("@UserName", SqlDbType.VarChar);
            name.Value = UserName;
            SqlParameter password = cmd.Parameters.Add("@Password", SqlDbType.VarChar);
            password.Value = Pwd;
            DataSet ds = new DataSet();
            adpt.SelectCommand = cmd;
            adpt.Fill(ds);
            conn.Close();
            return 0;
        }

我的存储过程是,

ALTER PROCEDURE [dbo].[CreateUser] 
    -- Add the parameters for the stored procedure here
    @UserName varchar(200) = NULL,
    @Password varchar(200) = NULL  

AS


IF NOT EXISTS(select * from[dbo].[User] where
             [dbo].[User].User_Name=@UserName)
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    BEGIN
    SET NOCOUNT ON;

    -- Insert statements for procedure here
    insert into [dbo].[User] (User_Name,User_Password,User_Type)
    values (@UserName,@Password,'User')
END

希望你的建议

先谢谢

2 个答案:

答案 0 :(得分:0)

您可以在过程结束时执行SELECT @@ IDENTITY或SELECT SCOPE_IDENTITY()以返回插入的ID。如果值为NULL,则表示没有插入记录。

答案 1 :(得分:0)

请尝试以下操作:

    public int CreateUser(string UserName,string Pwd)
    {
        int intRowsinserted = 0;

        cmd = new SqlCommand("CreateUser", conn);
        cmd.CommandType = CommandType.StoredProcedure;
        SqlParameter name = cmd.Parameters.Add("@UserName", SqlDbType.VarChar);
        name.Value = UserName;
        SqlParameter password = cmd.Parameters.Add("@Password", SqlDbType.VarChar);
        password.Value = Pwd;

        cmd.Connection.Open();
        intRowsinserted = cmd.ExecuteNonQuery();
        cmd.Connection.Close();
        conn.Close();

        return intRowsinserted;
    }

首先,当我们想要返回数据集时,应该使用adpt.Fill(ds)。 第二个,cmd.ExecuteNonQuery()应该用于对表执行插入,更新或删除操作,它将返回插入,更新或删除的行数。 第三,有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.executenonquery.aspx

如果这可以解决您的问题,请将此答案标记为有用。