我的查询不起作用

时间:2014-02-06 05:48:29

标签: c# sql datagridview

我需要帮助解决这个问题,因为我被困了几天。我正在运行一个应用程序,其中的想法是存储在具有某些属性的数据库产品中,在DataGridView上显示它们并在其情况下进行编辑。

我可以正确插入有关db的信息并正确存储。现在,当我尝试编辑它们时,我正确地从DataGridView调用数据库信息,当我编辑信息时,我有ERROR MESSAGE: incorrect syntax near '('

这是我的代码,如果有人可以帮助我,我会非常满意。

所有这些都在方法“编辑”中:

    string constring = "Data Source=MyPC;Initial Catalog=StockCenter;Integrated Security=True";
    string Query = "update MyPC.StockCenter.dbo.Productos set (id_producto='" + this.txtCodigo + "',Marca='" + this.txtMarca.Text + "',Capacidad='" + this.txtCapacidad.Text + "',Proveedor='" + this.cboProveedores.SelectedValue + "',PrecioLista='" + this.txtPrecioLista.Text + "',PrecioVenta'" + this.txtPrecioVenta.Text + "' where id_productos='" + this.txtCodigo.Text + "')";
    SqlConnection conDataBase = new SqlConnection(constring);
    SqlCommand cmdDataBase = new SqlCommand(Query, conDataBase);
    SqlDataReader myReader;
    try
    {
        conDataBase.Open();
        myReader = cmdDataBase.ExecuteReader();
        MessageBox.Show("Edited");
        while (myReader.Read())
        {
        }
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message);
     }

我相信问题在于字符串查询。

2 个答案:

答案 0 :(得分:1)

使用SqlParameter .. 这样你就可以避免sql注入攻击,用'"&封闭数据。其他问题..

String query = "update MyPC.StockCenter.dbo.Productos set id_producto=@id_producto,..."
SqlCommand command = new SqlCommand(query, connection);

command.Parameters.Add(new SqlParameter("id_producto", this.txtCodigo));
//other paramters

command.ExecuteNonQuery();

答案 1 :(得分:1)

您的查询无效,因为您错过了“=”符号:  PrecioVenta'“+ this.txtPrecioVenta.Text +”'

所以更新它:PrecioVenta ='“+ this.txtPrecioVenta.Text +”'