如何使用Visual Studio 2012中的数据/值成员在组合框中执行搜索操作C#
我在初学者级别处于此类编程,因此我相信您中的某个人会知道如何解决我遇到的问题。如何使用Visual Studio 2012中的数据/值成员在组合框中执行搜索操作C#
我在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
是这样的搜索按钮:
当我从组合框中选择一个项目时,它应该只写出一条记录。相反,它向我展示了另一个与此无关的记录。
因此,这将是它,我明白任何回复:当我从下拉框中选择任何其他值这也恰好!
我认为这个问题是由您SELECT
查询WHERE
说法引起:
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可能会返回多个记录。
我道歉没有采取其他组合框的截图,但它也包含一个值,这就是为什么在我的SQL QUERY我把OR,所以搜索操作可以做从第一个或第二个组合框。但是,它也包含值,并且这些值是表格中颜色IME_ODELJENJA的值,您可以在这些屏幕截图中看到它。 –
您显示的示例与您显示的查询不符。在查询过程中,您正在筛选“PACIJENT_JMBG”和“DIJAGNOZAID”列,但您没有向我们显示这些列的值。这些列*匹配您使用的搜索参数似乎是合理的。 – David
与您的问题无关,但我相信您应该看到https://stackoverflow.com/q/332365/11683。 – GSerg
是的,但我设置了这个选项组合框。** SelectedValue **。我相信这是应用程序通过组合框中显示的显示成员识别超值会员的方式。第一个值的memeber是来自另一个表的PAC值,这是PACIJENT_JMBG引用的FK。同样的故事是另一个组合,DIJAGNOZAID是FK引用另一个表中的PK,PK是第二个组合框的值成员。 –