任何人都可以告诉我的例程出了什么问题

时间:2011-02-05 05:53:28

标签: asp.net mysql

我的要求是,如果用户单击更新数据而不更改表单上的任何字段,我希望显示为未进行更改以及是否有任何更改我想更新数据

我已经编写了一个用于更新数据的例程,如下所示

CREATE DEFINER=`root`@`%` PROCEDURE `uspEmployeeFaxDetailsUpdate`(_EmpID int(11),
_FaxNumberTypeID varchar(45),
_FaxNumber decimal(10,0),
_EndDate datetime)

BEGIN

 declare p_ecount int;

  set p_ecount= (select count(1) from tblemployeefaxdetails  where
 FaxNumberTypeID=_FaxNumberTypeID and
 FaxNumber=_FaxNumber and
 EndDate='9999-12-31');

 if p_ecount=0 then

begin

 update tblemployeefaxdetails

  set

    EndDate=_EndDate WHERE EmpID=_EmpID and EndDate="9999-12-31";

    insert into tblemployeefaxdetails(EmpID,FaxNumberTypeID,FaxNumber,StartDate,EndDate) values
    (_EmpID,_FaxNumberTypeID,_FaxNumber,curdate(),'9999-12-31');

    end;
    end if;

END

我得到了一些时间我需要的消息,但有时它显示更新消息

这是我的更新代码

   oEmployeePersonalData.EmpID = EmpID;
        oEmployeePersonalData.FaxNumberTypeID = ddlFaxTypeID.SelectedItem.Text;
        oEmployeePersonalData.FaxNumber = Convert.ToInt64(txtFaxNumber.Text);
        oEmployeePersonalData.EndDate = DateTime.Today.AddDays(-1);
        if (oEmployeePersonalData.FaxDetailUpdate())
        {
            oMsg.Message = "Updated Sucessfully";
            Label m_locallblMessage;
            oMsg.AlertMessageBox(out m_locallblMessage);
            Page.Controls.Add(m_locallblMessage);
                       }
        else
        {
            oMsg.Message = "Not Sucessfully";
            Label m_locallblMessage;
            oMsg.AlertMessageBox(out m_locallblMessage);
            Page.Controls.Add(m_locallblMessage);
        }

更新了代码

   public bool FaxDetailUpdate()
    {
        m_bFlag = false;
        try
        {

            m_oCmd = new MySqlCommand(StoredProcNames.tblEmployeeFaxdetails_uspEmployeeFaxdetailsUpdate, m_oConn);
            m_oCmd.CommandType = CommandType.StoredProcedure;
            m_oCmd.Parameters.AddWithValue("_EmpID", EmpID);
            m_oCmd.Parameters.AddWithValue("_FaxNumberTypeID", FaxNumberTypeID);
            m_oCmd.Parameters.AddWithValue("_FaxNumber", FaxNumber);
            m_oCmd.Parameters.AddWithValue("_EndDate", EndDate);
            if (m_oConn.State == ConnectionState.Closed)
            {
                m_oConn.Open();
            }
            if ((m_oCmd.ExecuteNonQuery()) > 0)
            {
                this.m_bFlag = true;
            }
        }
        catch (MySqlException oSqlEx)
        {
            m_sbErrMsg.Length = 0;
            m_sbErrMsg = Utilities.SqlErrorMessage(oSqlEx);
            //DB write the Error Log
            m_oErrlog.Add(m_sbErrMsg.ToString(), DateTime.Now);
        }
        catch (Exception oEx)
        {
            m_sbErrMsg = Utilities.ErrorMessage(oEx);
            //DB write the Error Log
            m_oErrlog.Add(m_sbErrMsg.ToString(), DateTime.Now);
        }
        finally
        {
            m_oConn.Close();
        }
        return this.m_bFlag;
    }

我没有收到任何错误,但我希望按照我的说法完成

任何人都可以告诉我必须在此

中做出哪些更改

1 个答案:

答案 0 :(得分:0)

我真的不了解例程,魔术日期9999-12-31代表什么,以及每次插入新记录的原因,而不是更新旧记录。

您可以做的是,如果行被更改,则例程返回指示符,通过p_ecount参数返回OUT的值。

有关如何使用.net MySql客户端使用OUT参数的详细信息,请参阅http://dev.mysql.com/doc/refman/5.0/en/connector-net-programming-stored.html