C# 从listview传输到listbox并更新SQL Server数据库
我有一个表单,它使用SQL查询将数据从C# 从listview传输到listbox并更新SQL Server数据库,c#,sql-server,winforms,listview,listbox,C#,Sql Server,Winforms,Listview,Listbox,我有一个表单,它使用SQL查询将数据从listview传输到listbox。我没有错误,SQL代码正在读取查询并将数据从listview传输到listbox正在工作,但我的SqlCommand似乎没有运行/更新我的datagridview。我不知道这是否是放置SqlCommand的正确位置-请帮助我解决此问题 for (int intCount = 0; intCount < listViewOrders.Items.Count; intCount++) { listBoxInvo
listview
传输到listbox
。我没有错误,SQL代码正在读取查询并将数据从listview
传输到listbox
正在工作,但我的SqlCommand
似乎没有运行/更新我的datagridview
。我不知道这是否是放置SqlCommand
的正确位置-请帮助我解决此问题
for (int intCount = 0; intCount < listViewOrders.Items.Count; intCount++)
{
listBoxInvoice.Items.Add(listViewOrders.Items[intCount].Text);
listBoxInvoice.Items.Add(" x" + listViewOrders.Items[intCount].SubItems[2].Text +
" @ " + listViewOrders.Items[intCount].SubItems[1].Text);
connect.Open();
SqlCommand cmd = new SqlCommand("UPDATE tblProducts SET productQuantity = productQuantity - " +
listViewOrders.Items[intCount].SubItems[2].Text + "WHERE productName = '" + listViewOrders.Items[intCount].Text + "'", connect);
connect.Close();
}
dataGridProd.Update();
dataGridProd.Refresh();
for(int-intCount=0;intCount
先谢谢你。欢迎任何类型的回复。我认为这在您的查询中是一个空格,特别是在
WHERE
子句中
这样做:
SqlCommand cmd = new SqlCommand("UPDATE tblProducts SET productQuantity = productQuantity - " + listViewOrders.Items[intCount].SubItems[2].Text + " WHERE productName = '" + listViewOrders.Items[intCount].Text + "'", connect);
cmd.ExecuteNonQuery();
或者,如果您使用的是C#6+,则使用字符串插值
var cmd = new SqlCommand($@"UPDATE tblProducts SET productQuantity = productQuantity - {listViewOrders.Items[intCount].SubItems[2].Text} WHERE productName = '{listViewOrders.Items[intCount].Text}'", connect);
cmd.ExecuteNonQuery();
不要忘记使用ExecuteNonQuery
执行它,因为您是
更新数据
并确保listViewOrders.Items[intCount].Text有一个值。您可以添加断点来检查它
===================更新================
如果使用SQL参数来避免SQL注入,效果会更好
您在运行时是否有任何错误?@JericCruz到目前为止没有错误,但它没有更新productQuantity-您不应该将SQL语句连接在一起-使用参数化查询来避免SQL注入-检查您只是定义了cmd
-但您从未执行(运行)它。。。。。您需要使用cmd.ExecuteNonQuery()
(在调用connect.Close()
之前)来实际运行该代码……非常感谢。我只是忘记了cmd.ExecuteNonQuery();还有一件事,先生。如何更新按钮上的datagridview?我正在使用dataGridView.Refresh();和更新();但什么都不管用。萨乌利廷爵士。Maraming salamat您可以首先更新绑定到datagrid的数据源,然后执行dataGridProd.Refresh()
。
SqlCommand cmd = new SqlCommand("UPDATE tblProducts SET productQuantity = productQuantity - @quantity WHERE productName = @productName", connect);
cmd.Parameters.AddWithValue("@quantity", listViewOrders.Items[intCount].SubItems[2].Text);
cmd.Parameters.AddWithValue("@productName", listViewOrders.Items[intCount].Text);
cmd.ExecuteNonQuery();