【问题标题】:Not running query even tho Im sending the values in ASP即使我在 ASP 中发送值也没有运行查询
【发布时间】:2017-10-27 15:34:41
【问题描述】:

我正在运行一个更新查询,它说它没有找到第二个参数(状态),尽管我很清楚地发送了它。它们在不同的类中,被一个按钮调用,该按钮发送一封邮件,然后更改主表中变量 (statusRef) 的值(此字段是新字段)。

    protected void sendMail(object sender, EventArgs e)
    {
        BO.Messages mail = new BO.Messages();
        string body = "Cuerpo Mensaje";
        string title = "Titulo";
        string script = "alert(\"An email has been sent to the candidate! \");";
        mail.refEmail(emailCandi.Text,title,body);
        ScriptManager.RegisterStartupScript(this, GetType(),
                              "ServerControlScript", script, true);
        Email_Sent.Visible = true;
        changeRefStatus(Int32.Parse(idCand.Text), "1");           
    }

    protected void changeRefStatus(int id, string status)
    {
        ASF.HC.JobApplication.BO.User u = new ASF.HC.JobApplication.BO.User();
        u.saveStatusRef(id,status);


    }

    public int saveStatusRef(int id, string status)
    {
        Entity.User u = new Entity.User();
        SqlCommand comando = new SqlCommand("dbo.[user_saveStatusRef]", base.Db);
        SqlParameter spSearch = new SqlParameter("@id", System.Data.SqlDbType.Int);
        SqlParameter spSearch2 = new SqlParameter("@status", System.Data.SqlDbType.VarChar);
        spSearch.Value = id;
        spSearch.Value = status;
        comando.Parameters.Add(spSearch);
        comando.Parameters.Add(spSearch2);
        return base.ExecuteScalar(comando);
    }

存储过程...

ALTER PROCEDURE dbo.user_saveStatusRef 
@id int,
@status varchar(5)
AS
UPDATE tbl_user
set statusRef = @status
WHERE id = @id

【问题讨论】:

    标签: asp.net sql-server sql-update


    【解决方案1】:

    可能是一个错字,但您没有将值分配给spSearch2

        spSearch.Value = id;
        spSearch.Value = status;
    

    【讨论】:

    • 不错的收获!这可以解释为什么它没有找到第二个参数。
    • 天哪!多好的眼光。那工作得很好,但现在我遇到了一个异常(尽管它确实改变了值)。此消息: ASF.HC.JobApplication.Data.dll 中出现“System.NullReferenceException”类型的异常,但未在用户代码中处理附加信息:对象引用未设置为对象的实例。我不知道仅处理异常或更改其他任何内容是否是一个明智的建议.....
    • 哪一行给了你例外?您应该使用 ExecuteNoQuery... ExecuteScalar 用于 COUNT(*) 之类的东西,其中只有一个值。
    • 受保护的 int ExecuteScalar(SqlCommand comando) { comando.CommandType = System.Data.CommandType.StoredProcedure; Db.Open();整数行数 = 0; bool executionValid = int.TryParse(comando.ExecuteScalar().ToString(), out rowCount);
    • 不确定是否有任何区别,但请尝试comando.ExecuteNonQuery();
    猜你喜欢
    • 1970-01-01
    • 2020-09-16
    • 1970-01-01
    • 2015-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-11
    • 2015-02-24
    相关资源
    最近更新 更多