在减法运算符c#web服务中,数据类型varchar和varchar不兼容

在减法运算符c#web服务中,数据类型varchar和varchar不兼容,c#,web-services,windows-forms-designer,C#,Web Services,Windows Forms Designer,目前,我使用五个层,在我的业务层中,我有一个方法可以将他调用到我的Web服务中,但我不能进行减法 public void ActualizarStock(ConsultaStock consultaStock, int cantidad_salida) { this.configurarConexion(); this.Conec.CadenaSQL = "UPDATE Consulta_stock " + " SET can

目前,我使用五个层,在我的业务层中,我有一个方法可以将他调用到我的Web服务中,但我不能进行减法

public void ActualizarStock(ConsultaStock consultaStock, int cantidad_salida)
{
    this.configurarConexion();
    this.Conec.CadenaSQL = "UPDATE Consulta_stock "
                           + " SET cantidad = '" + consultaStock.Cantidad.ToString() + "' - '"
                           + cantidad_salida.ToString()
                           + "' WHERE sku = '" + consultaStock.Sku + "';";
    this.Conec.EsSelect = true;
    this.Conec.conectar();
}
像这样:

this.Conec.CadenaSQL = "UPDATE Consulta_stock "
                           + " SET cantidad = " + consultaStock.Cantidad.ToString() + " - "
                           + cantidad_salida.ToString()
                           + " WHERE sku = '" + consultaStock.Sku + "';";
或者为什么不:

this.Conec.CadenaSQL = "UPDATE Consulta_stock "
                           + " SET cantidad = " + (consultaStock.Cantidad - cantidad_salida).ToString()
                           + " WHERE sku = '" + consultaStock.Sku + "';";

SQL中的
字符被用作字符串分隔符,您可以在查询之前进行反计算,也可以直接删除

例如:

public void ActualizarStock(ConsultaStock consultaStock, int cantidad_salida)
{
    int nuevoStock = consultaStock.Cantidad - cantidad_salida;
    this.configurarConexion();
    this.Conec.CadenaSQL = "UPDATE Consulta_stock SET cantidad = " + nuevoStock.ToString() + " WHERE sku = '" + consultaStock.Sku + "';";
    this.Conec.EsSelect = true;
    this.Conec.conectar();
}

嗯,是的。。。你不能减去字符串。你为什么要这么做?我的数据库和类中的参数都是int,我如何才能转换为int?SQL中的字符
被用作字符串类型分隔符。根据
consultaStock.Sku
的值,你可以成功地拥有SQL注入漏洞,这非常简单。。。该死的单引号。塔安克斯