如何使用Visual Studio 2012 C#

时间:2017-09-16 13:57:02

标签: c# search combobox data-members valuemember

我在这种编程的初级阶段,所以我相信你们中的某个人会知道如何解决我遇到的这个问题。

我在Visual Studio中有一个与Oracle Database 11g Express连接的小项目,我想从数据库对特定表执行搜索操作,并在我的Visual Studio项目中以此表单显示它。 所以我有两个组合框填充了数据成员的显示成员。数据成员通常是表中的外键,例如ID等,在这些组合框中显示的显示成员通常是姓名和姓氏,当然与我之前提到的那些ID相关联。
所以我想选择这些显示成员并通过它们来搜索特定的所有数据。
这是我表单中选择按钮的查询:

OracleConnection con = new OracleConnection("DATA SOURCE=localhost:1521/XE;PERSIST SECURITY INFO=True;USER ID=BAYE;PASSWORD=blagojica");
con.Open();

OracleDataAdapter dr = new OracleDataAdapter("SELECT *  FROM zaposlenja where RAD_JMBG='" + comboBox1.SelectedValue + "' or ODELJENJEID='"+comboBox2.SelectedValue+"'", con);
DataTable dt = new DataTable();
dr.Fill(dt);
dataGridView2.DataSource = dt;
con.Close();
this.dataGridView2.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells;`

我有这个表,其中ime_pacijenta是姓名,prezime_pacijenta是姓,PRETRAGA是此搜索按钮:

image

当我从组合框中选择一个项目时,它应该只写出一个记录。相反,它向我展示了另一条与此无关的记录。当我从组合框中选择任何其他值时也会发生这种情况:

image

那就是它,我感谢任何回复!

1 个答案:

答案 0 :(得分:0)

我认为问题是由WHERE查询的SELECT声明引起的:

OracleDataAdapter dr = new OracleDataAdapter("SELECT PACIJENT_JMBG, IME_PACIJENTA, PREZIME_PACIJENTA, NAZIV, OPIS,  NAZIVDIJAGNOZE, DIJAGNOZAID FROM TERAPIJE WHERE PACIJENT_JMBG='"+comboBox1.SelectedValue+"' or DIJAGNOZAID='"+comboBox2.SelectedValue+"'", con);

您不应在WHERE声明中包含任何没有值的combox。在你正在展示的图像中;第二个组合框没有值,但在查询中仍然会考虑它,这反过来会影响结果。如果至少有一个组合框没有值,你应该重写WHERE语句部分,或者你可以让你的组合框默认值。

注意:您应该确定是否要在WHERE语句中使用ORing或ANDing,因为使用ORing可能会返回多条记录。