0

我在这种编程方面处于初学者水平,所以我相信你们中的某些人会知道如何解决我遇到的这个问题。

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

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是这个搜索按钮:

图片

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

图片

就是这样,我感谢任何回复!

4

1 回答 1

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语句中包含任何没有值的组合框。在您展示的图片中;第二个组合框没有值,但仍会在查询中考虑,这反过来会影响结果。WHERE如果至少有一个组合框没有值,您应该重写您的语句部分,或者您可以让您的组合框默认有值。

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

于 2017-09-16T14:37:42.373 回答