我的数据库有问题。我有两个表LoggingAspect
和<select id="example-multiple-optgroups">
<optgroup label="Group 1">
<option value="1-1">Option 1.1</option>
<option value="1-2" selected="selected">Option 1.2</option>
<option value="1-3" selected="selected">Option 1.3</option>
</optgroup>
<optgroup label="Group 2">
<option value="2-1">Option 2.1</option>
<option value="2-2">Option 2.2</option>
<option value="2-3">Option 2.3</option>
</optgroup>
</select>
。
Employee
包含7列:
Department
Employee
包含两列:
Id (int), Name (nvarchar(max)), LastName(nvarcharmax), Age(int), Dep_nt(nvarchar(max)), Profession (nvarchar(max)), Salary (real).
我有一个Department
(列表框),其中包含有关部门的信息,还有Id (int), DepartmentName(nvarchar(max)
(列表视图),其中包含有关在这些部门工作的员工的信息。
我需要根据从DpListBox
中选择的值来填充Ep
。主要问题在于以下代码行:
Ep
我认为DpListBox
是因为我的数据库包含两个字段SqlCommand command = new SqlCommand($@"SELECT * FROM Employee WHERE Dep_nt=" + DpListBox.SelectedValue.ToString(), connection);
和DpListBox.SelectedValue = System.Data.DataRowView
,在这里我只需要Id
。
这是我后面的代码:
DepartmentName
我使用WPF,这是XAML代码:
DepartmentName
答案 0 :(得分:3)
您需要执行以下操作才能从DataRowView
获取列值。
DataRowView dataRowView = DpListBox.SelectedItem as DataRowView;
string value = "";
if (dataRowView != null) {
value = dataRowView.Row["DepartmentName"] as string;
}
然后您必须像这样将value
而不是DpListBox.SelectedValue.ToString()
传递给您的查询。
SqlCommand command = new SqlCommand(@"SELECT * FROM Employee WHERE Dep_nt='" + value + "'", connection);
注意:始终尝试使用准备好的语句(参数化查询),这将防止SQL注入。
因此将进行参数化查询。
SqlCommand command = new SqlCommand(@"SELECT * FROM Employee WHERE Dep_nt=@Dep_nt", connection);
command.Parameters.AddWithValue("@Dep_nt", value);