我在这种编程的初级阶段,所以我相信你们中的某个人会知道如何解决我遇到的这个问题。
我在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
是此搜索按钮:
当我从组合框中选择一个项目时,它应该只写出一个记录。相反,它向我展示了另一条与此无关的记录。当我从组合框中选择任何其他值时也会发生这种情况:
那就是它,我感谢任何回复!
答案 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可能会返回多条记录。