我有2个数据库表,分别是办公室和状态。状态包括有缺陷的零件,丢失的零件和丢失的零件。我想发生的事情是,每当我选择一个办公室时,该办公室的有缺陷,遗漏的零件和丢失的物品都会被计数并显示在文本框或标签中。
屏幕截图:
sqlconnection.Open()
Dim cmd As New MySqlCommand("Select Count(*) from cpfrtsdata where office = '" & ComboBox1.Text & "' ", sqlconnection)
Dim i As Integer = cmd.ExecuteScalar()
cmd = Nothing
sqlconnection.Close()
Label3.Text = i
答案 0 :(得分:1)
Select Count(*) from cpfrtsdata where office = 'Carpentry Shop'
将返回办公室数等于Carpentry Shop
的记录数。为了获得每个status
的总数,您将需要多次发出SQL事务,如下所示:
Select Count(*) from cpfrtsdata where office = 'Carpentry Shop' and status = 'Defective'
Select Count(*) from cpfrtsdata where office = 'Carpentry Shop' and status = 'Lost'
,依此类推。或者,您也可以修改SQL以在一次事务中检索全部内容:
Select
sum(case status when 'Defective' then 1 else 0 end) as TotalDefective,
sum(case status when 'Lost' then 1 else 0 end) as TotalLost,
sum(case status when 'Missing Parts' then 1 else 0 end) as TotalMissingParts
from cpfrtsdata
where office = 'Carpentry Shop'
group by office
由于此查询返回一个表,因此您需要使用MySqlDataAdapter
或cmd.ExecuteReader
。
答案 1 :(得分:0)
我要检查的第一件事是验证您是否从组合框中获得了价值。单步调试器并验证期望值。然后检查以确保您从查询中获取了一个值。为控件提供比ComboBox1和Label3更好的名称,使用默认名称使用错误的控件太容易了。
然后我将从使用text属性切换到SelectedItem,以从控件中获取值。
MS Docs关于组合框说:
您可以使用这些属性来管理当前选中的项目 列表中的Text属性,以指定显示在 编辑字段中,使用SelectedIndex属性获取或设置当前 项和SelectedItem属性,以获取或设置对 对象。
Dim officeString As String = ComboBox1.SelectedItem.ToString()
此外,您需要在查询中使用参数来防止SQL注入攻击