2015-01-21 46 views
0

我只想在一个textbox中搜索,如果搜索到的id在学生或教师表中都是相同的,它将查看表格并显示数据,但我不知道如何。如何在两张表中搜索?

cn.Open() 

    With cmd 
     .Connection = cn 
     If (dt.Rows.Count > 0) Then 
      .CommandText = "SELECT * FROM Students WHERE Familyname = '" & search.Text & "' OR Firstname = '" & search.Text & "' OR StudentID = '" & search.Text & "' OR RFID = '" & search.Text & "'" 
      Searchfrm.Show() 
      da.SelectCommand = cmd 
      dt.Clear() 
      da.Fill(dt) 
      cn.Close() 

     Else : .CommandText = "SELECT * FROM FactandStaff WHERE Familyname LIKE '%" & search.Text & "%' OR Firstname LIKE '%" & search.Text & "%' OR FacultyorStaffID LIKE '%" & search.Text & "%' OR RFID LIKE '%" & search.Text & "%' OR College LIKE '%" & search.Text & "%'" 
      searchfrm2.Show() 
      da.SelectCommand = cmd 
      dt.Clear() 
      da.Fill(dt) 
      cn.Close() 
     End If 
    End With 
+0

如果textbox.text匹配两个表怎么办? – RezaRahmati 2015-01-21 09:35:41

+0

SQL注入,你需要学习LINQ – Gouda 2015-01-21 09:38:02

+0

你为什么不把你的两个表合并成一个通用表,并且有一个字段告诉你他们是教师还是学生(使用case语句)并查询这个表 – 2015-01-21 09:40:18

回答

0

我假设你需要显示两个表例如两个要显示FirstNameFamilyName然后你只需要运行1个查询如下

"Select 1 as [type] , FirstName, LastName from Students "+ 
" WHERE Familyname = '" & search.Text & "' OR Firstname = '" & search.Text & "' OR StudentID = '" & search.Text & "' OR RFID = '" & search.Text & "'"+ 
+" Union All " 
+" Select 2 , FirstName, LastName from FactandStaff)"+ 
+"WHERE Familyname LIKE '%" & search.Text & "%' OR Firstname LIKE '%" & search.Text & "%' OR FacultyorStaffID LIKE '%" & search.Text & "%' OR RFID LIKE '%" & search.Text & "%' OR College LIKE '%" & search.Text & "%'" 

PS一般的数据:而不是像这样使用string.format,如下所示

String.Format("Select 1 as [type], FirstName, LastName from Students where Familyname = '{0}' or Firstname = '{0}' OR StudentID = {0} OR RFID = '{0}' \r Union All \r Select 2,FirstName, LastName from FactandStaff WHERE Familyname LIKE '%{0}%' OR Firstname LIKE '%{0}%' OR FacultyorStaffID LIKE '%{0}%' OR RFID LIKE '%{0}%' OR College LIKE '%{0}%'", search.Text); 
+0

但先生如果在文本框中输入的ID等于教师或学生如何显示表单? – 2015-01-21 09:56:19

+0

@AlistaireTurno查询将返回两个记录,但是如果在两个表中有两个记录具有相同的firstName,那么是否希望发生这种情况?在这种情况下,您的策略是什么?如果你想显示错误,如果id相同(即结果包含多条记录),请做相同的操作。如果你想把它们全部展示给用户,用户可以在它们之间进行选择,对于ID也是一样的 – RezaRahmati 2015-01-21 09:59:40

+0

@AlistaireTurno aslo我已经添加了一个'type'列来查询我的答案,所以在结果集中你会理解记录是属于的到哪个表 – RezaRahmati 2015-01-21 10:01:21