在更新方法中将数据类型varchar转换为数字时出错

问题描述 投票:0回答:1

我正在尝试创建一种更新方法。代码很好,但是当我运行项目时它给我一个错误:

转换为数字类型的数字时的转换。 (错误将数据类型varchar转换为数字)

我的代码是:

public ActionResult Edit(string numQuittance)
    {
        var connetionString = ConfigurationManager.ConnectionStrings["connections"].ToString();
        QUITTANCIER quittancier = new QUITTANCIER();
        using (SqlConnection connection = new SqlConnection(connetionString))
        {
            string sql = $"Select numero_quittance,numero_police,date_mvt_du,date_mvt_au,prime_gbase,prime_gannexe,frais,taxes,commission_paye From quittancier Where numero_quittance ='{numQuittance}'";
            SqlCommand command = new SqlCommand(sql, connection);
            connection.Open(); using (SqlDataReader dataReader = command.ExecuteReader())
            {
                while (dataReader.Read())
                {
                    quittancier.NUMERO_QUITTANCE = Convert.ToString(dataReader["NUMERO_QUITTANCE"]);
                    quittancier.NUMERO_POLICE = Convert.ToString(dataReader["NUMERO_POLICE"]);
                    quittancier.DATE_MVT_DU = Convert.ToDateTime(dataReader["DATE_MVT_DU"]);
                    quittancier.DATE_MVT_AU = Convert.ToDateTime(dataReader["DATE_MVT_AU"]);
                    quittancier.PRIME_GBASE = Convert.ToInt32(dataReader["PRIME_GBASE"]);
                    quittancier.PRIME_GANNEXE = Convert.ToInt32(dataReader["PRIME_GANNEXE"]);
                    quittancier.FRAIS = Convert.ToInt32(dataReader["FRAIS"]);
                    quittancier.TAXES = Convert.ToInt32(dataReader["TAXES"]);
                    quittancier.COMMISSION_PAYE = Convert.ToInt32(dataReader["COMMISSION_PAYE"]);

                }
            }
            connection.Close();
        }
        return View(quittancier);


    }
    [HttpPost]
    [ActionName("Edit")]
    public ActionResult Edit(QUITTANCIER quittancier)
    {
        var connetionString = ConfigurationManager.ConnectionStrings["connections"].ToString();
        using (SqlConnection connection = new SqlConnection(connetionString))
        {
            string sql = "Update quittancier set numero_quittance='" + quittancier.NUMERO_QUITTANCE + "',numero_police='" + quittancier.NUMERO_POLICE + "',date_mvt_du='" + quittancier.DATE_MVT_DU + "',date_mvt_au='" + quittancier.DATE_MVT_AU + "',prime_gbase='" + quittancier.PRIME_GBASE + "',prime_gannexe='" + quittancier.PRIME_GANNEXE + "',frais='" + quittancier.FRAIS + "',commission_paye='" + quittancier.COMMISSION_PAYE + "'";
            using (SqlCommand command = new SqlCommand(sql, connection))
            {
                connection.Open();
                command.ExecuteNonQuery();
                connection.Close();
            }
        }
        return RedirectToAction("detail");
    }
}
c# .net
1个回答
0
投票

错误消息告诉您,数值不能转换为varchar。由于您没有执行任何显式转换,因此问题在于隐式转换。数据库尝试存储数字字段,但是您将文本值传递给它。注意,

'123'

是文本,而]

123

是数字。如果尝试存储数字值,则不需要在其两边加上引号,并且需要检查它是否确实是数字。

P.S。提防SQL注入,您的项目很容易被恶意的人入侵。

© www.soinside.com 2019 - 2024. All rights reserved.