0

我试图一次运行一个查询,如果不存在,它会检查用户名,然后插入该值

 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

希望你的建议

提前致谢

4

2 回答 2

0

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

于 2013-05-02T07:21:41.310 回答
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

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

于 2013-05-02T07:34:27.140 回答