c# - 存储过程不执行 ASP.NET C#

标签 c# asp.net stored-procedures sql-server-2008-r2

我真的不知道该怎么办。你能帮帮我吗?

我想做的是,当一个人想要修改他的数据时,他们会在完成修改后单击从数据库中获取的屏幕上显示的数据,这就是存储过程检查数据是否正确的地方修改它更新但如果它没有被修改......那么它不会修改数据库但是当我运行 proyect 它只是不起作用。

有趣的是,存储过程在 SQLServer 上有效,但在 C# 上却不行。

这是我的代码:

存储过程:

    Create Procedure SP_PDF
    (@nombre varchar(50), @tel int, @dir varchar(50), @rfc char(13))
    as
    declare @cont int
    set @cont = 0
    while(@cont < 4)
    Begin
        if((select nombre from cat_cliente where rfc = @rfc) != @nombre)
            Begin
                update cat_cliente set nombre = @nombre 
            End
        else
            Begin
                set @cont += 1
            End 
        if((select telefono from cat_cliente where rfc = @rfc) != @tel)
            Begin
                update cat_cliente set telefono = @tel
            End
        else
            Begin
                set @cont += 1
            End
        if((select direccion from cat_cliente where rfc = @rfc) != @dir)
            Begin
                update cat_cliente set direccion = @dir
            End
        else
            Begin
                set @cont += 1
            End
    End

C#:

        String query = "exec SP_PDF @nombre, @tel, @dir, @rfc";
        SqlCommand cmd = new SqlCommand(query, cnx);
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.AddWithValue("@nombre", SqlDbType.VarChar).Value = Nombre.Text;
        cmd.Parameters.AddWithValue("@tel", SqlDbType.Int).Value = Telefono.Text;
        cmd.Parameters.AddWithValue("@dir", SqlDbType.VarChar).Value = Direccion.Text;
        cmd.Parameters.AddWithValue("@rfc", SqlDbType.Char).Value = RFC.Text;

        SqlDataAdapter adp = new SqlDataAdapter(cmd);
        DataSet set = new DataSet();

        try
        {
            cnx.Open();
            cmd.ExecuteNonQuery();
            adp.Fill(set);
            Response.Write("<script>window.alert('¡Funciono!');</script>");
        }
        catch (Exception ex)
        {
            throw ex;
        }
        finally
        {
            cnx.Close();
        }

最佳答案

试试这个 如下更改您的 SP

ALTER Procedure SP_PDF
(@nombre varchar(50), @tel int, @dir varchar(50), @rfc char(13))
as
declare @cont int
set @cont = 0


declare @sp_nombre varchar(50) 
declare @sp_tel int
declare @sp_dir varchar(50)
declare @sp_rfc char(13)

select @sp_nombre=nombre,@sp_tel=telefono,@sp_dir=direccion from cat_cliente where rfc = @rfc

while(@cont < 4)
Begin
    if( @sp_nombre <> @nombre)
        Begin
            update cat_cliente set nombre = @nombre 
        End
    else
        Begin
            set @cont += 1
        End 
    if(@sp_tel <> @tel)
        Begin
            update cat_cliente set telefono = @tel
        End
    else
        Begin
            set @cont += 1
        End
    if(@sp_dir <> @dir)
        Begin
            update cat_cliente set direccion = @dir
        End
    else
        Begin
            set @cont += 1
        End
End

编写如下C#代码

  String query = "SP_PDF";
        SqlCommand cmd = new SqlCommand(query, cnx);
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.AddWithValue("@nombre", SqlDbType.VarChar).Value = Nombre.Text;
        cmd.Parameters.AddWithValue("@tel", SqlDbType.Int).Value = Telefono.Text;
        cmd.Parameters.AddWithValue("@dir", SqlDbType.VarChar).Value = Direccion.Text;
        cmd.Parameters.AddWithValue("@rfc", SqlDbType.Char).Value = RFC.Text;
        try
        {
            cnx.Open();
            cmd.ExecuteNonQuery();
            Response.Write("<script>window.alert('¡Funciono!');</script>");
        }
        catch (Exception ex)
        {
            throw ex;
        }
        finally
        {
            cnx.Close();
        }

关于c# - 存储过程不执行 ASP.NET C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23863578/

相关文章:

c# - 绑定(bind) ListView 时无法将类型 'string' 转换为 'bool'

asp.net - 推荐的下载远程SQL Server数据库的方法

oracle - 拆分字符串并迭代存储过程中的每个值

c# - 验证不使用模型时是否选中复选框

c# - Linq to Entity 从 DateTime 获取日期

c# - 人们如何将大量数据 (ETL) 从 ASP.NET 网站导入数据库?

c# - 检测到布局循环。布局无法完成​​。检测到布局循环。布局无法完成

ASP.Net Core 2 - IIS 502.5 错误

oracle - 每次 EXECUTE IMMEDIATE 后都需要 COMMIT 吗?

sql-server - sql server 2008 存储过程,不能在单引号中使用变量