我需要帮助解决这个问题,因为我被困了几天。我正在运行一个应用程序,其中的想法是存储在具有某些属性的数据库产品中,在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);
}
我相信问题在于字符串查询。
答案 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 +”'