在数据库中插入数据(C#和ASP)时出现无效的格式错误

时间:2018-11-10 16:42:28

标签: c# asp.net

我错过了一些东西,但我找不到。以下是我收到的错误。大多数输入(例如票证编号,问题编号)来自会话变量。我输入的唯一输入是“分辨率” txtbox。其他字段是可选的

Error received when hitting submit

这是我的代码,可在出现错误时将其插入。

 private void InsertResolution()
    {

         Int32 intRetValue;

        intRetValue = clsDatabase.InsertResolution(Convert.ToInt32(chkNoCharge.Checked.ToString()),
            Convert.ToInt32(lblTicketNo.Text.Trim().ToString()), 
            Convert.ToInt32(lblProblemNo.Text.Trim().ToString()), 
            Convert.ToInt32(lblResolutionEnt.Text.Trim().ToString()), 
            txtResolution.Text.Trim(), txtDateFixed.Text.Trim().ToString(), 
            txtDateOnsite.Text.Trim().ToString(), 
            Convert.ToInt32(drpTechnician.SelectedValue), 
            Convert.ToDecimal(txtHours.Text.Trim().ToString()), 
            Convert.ToDecimal(txtCostHours.Text.Trim().ToString()),
            Convert.ToDecimal(txtMileage.Text.Trim().ToString()), 
            Convert.ToDecimal(txtCostMiles.Text.Trim().ToString()),
            Convert.ToDecimal(txtSupplies.Text.Trim().ToString()), 
            Convert.ToDecimal(txtMisc.Text.Trim().ToString()));

        if (intRetValue == 0)
        {
            lblError.Text = "New resolution INSERTED.";
            lblResolutionEnt.Text = (int.Parse(lblResolutionEnt.Text) + 1).ToString();

        }
        else
        {
            lblError.Text = "Error inserting new resolution.";
        }
    }

这是我班上的代码

  public static Int32 InsertResolution(Int32 intNocharge, Int32 intTicketID, Int32 intIncidentNo, Int32 intResNo, String strResDesc, String strDateFix, String strDateOnsite, Int32 intTechID, Decimal decHours, Decimal decCostHours, Decimal decMileage, Decimal decCostMiles, Decimal decSupplies, Decimal decMisc)
    {
        SqlConnection cnSQL;
        SqlCommand cmdSQL;
        Boolean blnErrorOccurred = false; //** set up to false assuming we don't get errors
        Int32 intRetCode = 0;

        cnSQL = AcquireConnection();
        if (cnSQL == null)
        {
            blnErrorOccurred = true;
        }
        else
        {
            //**Build command to execute stored procedure
            cmdSQL = new SqlCommand(); //**opening the SqlCommand
            cmdSQL.Connection = cnSQL; //** opening the command connection 
            cmdSQL.CommandType = CommandType.StoredProcedure; //** accessing the stored procedure from the command window
            cmdSQL.CommandText = "uspInsertResolution"; //** defining the stored procedure to run


            //**taking the input from the string inputting to the database
            cmdSQL.Parameters.Add(new SqlParameter("@NoCharge", SqlDbType.Int));
            cmdSQL.Parameters["@NoCharge"].Direction = ParameterDirection.Input;
            cmdSQL.Parameters["@NoCharge"].Value = intNocharge;


            //***********************************************************************
            cmdSQL.Parameters.Add(new SqlParameter("@TicketID", SqlDbType.Int));
            cmdSQL.Parameters["@TicketID"].Direction = ParameterDirection.Input;
            cmdSQL.Parameters["@TicketID"].Value = intTicketID;

            //***********************************************************************
            cmdSQL.Parameters.Add(new SqlParameter("@IncidentNo", SqlDbType.Int));
            cmdSQL.Parameters["@IncidentNo"].Direction = ParameterDirection.Input;
            cmdSQL.Parameters["@IncidentNo"].Value = intIncidentNo;

            //***********************************************************************
            cmdSQL.Parameters.Add(new SqlParameter("@ResNo", SqlDbType.Int));
            cmdSQL.Parameters["@ResNo"].Direction = ParameterDirection.Input;
            cmdSQL.Parameters["@ResNo"].Value = intResNo;

            //************************************************************************
            cmdSQL.Parameters.Add(new SqlParameter("@ResDesc", SqlDbType.NVarChar, 500));
            cmdSQL.Parameters["@ResDesc"].Direction = ParameterDirection.Input;
            cmdSQL.Parameters ["@ResDesc"].Value = strResDesc;

            //************************************************************************
            cmdSQL.Parameters.Add(new SqlParameter("@DateFix", SqlDbType.NVarChar));
            cmdSQL.Parameters["@DateFix"].Direction = ParameterDirection.Input;
          //**if the field is empty or null
            if (String.IsNullOrWhiteSpace(strDateFix))
            {
                cmdSQL.Parameters["@DateFix"].Value = DBNull.Value;
            }
            else
            {
                cmdSQL.Parameters["@DateFix"].Value = Convert.ToDateTime(strDateFix);
            }

            cmdSQL.Parameters.Add(new SqlParameter("@DateOnsite", SqlDbType.NVarChar));
            cmdSQL.Parameters["@DateOnsite"].Direction = ParameterDirection.Input;

            //**if the field is empty or null
            if (String.IsNullOrWhiteSpace(strDateOnsite))
            {
                cmdSQL.Parameters["@DateOnsite"].Value = DBNull.Value;
            }
            else
            {
                cmdSQL.Parameters["@DateOnsite"].Value = Convert.ToDateTime(strDateOnsite);
            }

            cmdSQL.Parameters.Add(new SqlParameter("@TechID", SqlDbType.Int));
            cmdSQL.Parameters["@TechID"].Direction = ParameterDirection.Input;
            cmdSQL.Parameters["@TechID"].Value = intTechID;

            cmdSQL.Parameters.Add(new SqlParameter("@Hours", SqlDbType.Decimal));
            cmdSQL.Parameters["@Hours"].Direction = ParameterDirection.Input;
            cmdSQL.Parameters["@Hours"].Value = decHours;

            cmdSQL.Parameters.Add(new SqlParameter("@Hours", SqlDbType.Decimal));
            cmdSQL.Parameters["@Hours"].Direction = ParameterDirection.Input;
            cmdSQL.Parameters["@Hours"].Value = decHours;

            //********************************************************************
            cmdSQL.Parameters.Add(new SqlParameter("@Mileage", SqlDbType.Decimal));
            cmdSQL.Parameters["@Mileage"].Direction = ParameterDirection.Input;

            if (decMileage.ToString() == null)
            {
                cmdSQL.Parameters["@Mileage"].Value = DBNull.Value;
            }
            else
            {
                cmdSQL.Parameters["@Mileage"].Value = decMileage;
            }

            //*********************************************************************
            cmdSQL.Parameters.Add(new SqlParameter("@CostMiles", SqlDbType.Decimal));
            cmdSQL.Parameters["@CostMiles"].Direction = ParameterDirection.Input;

            if (decCostMiles.ToString() == null)
            {
                cmdSQL.Parameters["@CostMiles"].Value = DBNull.Value;
            }
            else
            {
                cmdSQL.Parameters["@CostMiles"].Value = decCostMiles;
            }

            //*********************************************************************
            cmdSQL.Parameters.Add(new SqlParameter("@Supplies", SqlDbType.Decimal));
            cmdSQL.Parameters["@Supplies"].Direction = ParameterDirection.Input;

            if (decSupplies.ToString() == null)
            {
                cmdSQL.Parameters["@Supplies"].Value = DBNull.Value;
            }
            else
            {
                cmdSQL.Parameters["@Supplies"].Value = decSupplies;
            }

            //*********************************************************************
            cmdSQL.Parameters.Add(new SqlParameter("@Misc", SqlDbType.Decimal));
            cmdSQL.Parameters["@Misc"].Direction = ParameterDirection.Input;

            if (decMisc.ToString() == null)
            {
                cmdSQL.Parameters["@Misc"].Value = DBNull.Value;
            }
            else
            {
                cmdSQL.Parameters["@Misc"].Value = decMisc;
            }


            //**return the value and display to the page

            cmdSQL.Parameters.Add(new SqlParameter("@ErrCode", SqlDbType.Int));
            cmdSQL.Parameters["@ErrCode"].Direction = ParameterDirection.ReturnValue;

            try
            {
                intRetCode = cmdSQL.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                blnErrorOccurred = true;
            }
            finally
            {
                cmdSQL.Parameters.Clear();
                cmdSQL.Dispose();
                cnSQL.Close();
                cnSQL.Dispose();
            }
        }

        if (blnErrorOccurred)
        {
            //**if success
            return -1;
        }
        else
        {
            return 0;
        }
    }

这是我从课堂上调用的存储过程。感谢您的投入。

CREATE PROCEDURE [dbo].[uspInsertResolution]
@TicketID int,
@IncidentNo int,
@ResNo int,
@ResDesc nvarchar(500),
@DateFix datetime,
@DateOnsite datetime,
@TechID int,
@Hours decimal(10,2),
@Mileage decimal(10,1),
@CostMiles money,
@Supplies money,
@Misc money,
@NoCharge int = 0
AS
--*********************************************************************
--** Add a resolution
--*********************************************************************
SET NOCOUNT ON;
DECLARE @ErrCode int;

IF @NoCharge = 1
INSERT INTO [dbo].[Resolutions] ([TicketID],[IncidentNo],[ResolutionNo], 
[ResolutionDesc],[DateFixed],[DateOnsite],[TechnicianID],[Hours], 
[CostHours],[Mileage],[CostMiles],[Supplies],[Misc])
VALUES (@TicketID, @IncidentNo, @ResNo, @ResDesc, @DateFix, @DateOnsite, 
@TechID, @Hours, 0.0, @Mileage, @CostMiles, @Supplies, @Misc)

ELSE
INSERT INTO [dbo].[Resolutions] ([TicketID],[IncidentNo],[ResolutionNo], 
[ResolutionDesc],[DateFixed],[DateOnsite],[TechnicianID],[Hours], 
[CostHours],[Mileage],[CostMiles],[Supplies],[Misc])
SELECT @TicketID, @IncidentNo, @ResNo, @ResDesc, @DateFix, @DateOnsite, 
@TechID, @Hours, [HRate], @Mileage, @CostMiles, @Supplies, @Misc
FROM [dbo].[Technicians]
WHERE [TechnicianID] = @TechID;

SET @ErrCode = @@ERROR;
SET NOCOUNT OFF;
RETURN @ErrCode;

0 个答案:

没有答案