【问题标题】:How To Check Which Stored Procedure Query Is Running Sql Server Asp.Net?如何检查哪个存储过程查询正在运行 Sql Server Asp.Net?
【发布时间】:2013-05-02 07:12:48
【问题描述】:

我试图一次运行一个查询,如果不存在,它会检查用户名,然后插入该值/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

希望您的建议

提前致谢

【问题讨论】:

  • 嗨,我可以知道知道它的目的是什么吗?您想知道是否创建了新用户吗?
  • 它的目的是填充用户是否创建的消息框
  • 这是什么错误。请你列举一下?

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    尝试以下操作:

        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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-28
      • 1970-01-01
      • 1970-01-01
      • 2015-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多