我有要从数据库检索到的名字和姓氏,但是它不能正常工作。我从分开的列中的表中获得名称和姓氏。名称/姓氏以组合框/文本框组合的形式显示在我的表单上。现在,我需要检索此数据,但是在我的数据库中只有4个字段可以搜索,因为所有名称/姓氏在这些字段中组合在一起(用户请求)。我的代码一次只能进行2次搜索,但不能全部进行4次。这是我的代码:
编辑(现在可以使用-我分离了参数,并在OR语句中添加了方括号):
Using con As New OracleConnection("Data Source=myDB;User Id=Lucky;Password=MyPassword;")
con.Open()
Using cmd As New OracleCommand()
Dim SQL As String = "Select * FROM MyTable "
Dim conca As String = " Where "
Dim Person1 As String
Person1 = CmbName.Text.Trim & " " & TxtSurname.Text.Trim
If Not CmbName.Text = "" Then
SQL = String.Concat(SQL, conca, " (USER1 = :user OR USER2 = :user1)")
cmd.Parameters.Add(New OracleParameter("user", Person1))
cmd.Parameters.Add(New OracleParameter("user1", Person1))
conca = " and "
End If
Dim Person2 As String
Person2 = CmbName1.Text.Trim & " " & TxtSurname1.Text.Trim
If Not CmbName1.Text = "" Then
SQL = String.Concat(SQL, conca, " (ADMINISTRATOR1 = :admin OR ADMINISTRATOR2 = :admin1)")
cmd.Parameters.Add(New OracleParameter("admin", Person2))
cmd.Parameters.Add(New OracleParameter("admin1", Person2))
conca = " and "
End If
'Retrieve data using execute reader
cmd.Connection = con
cmd.CommandText = SQL
cmd.CommandType = CommandType.Text
Dim dr As OracleDataReader = cmd.ExecuteReader()
Dim dt As New DataTable
dt.Load(dr)
DataGridView1.DataSource = dt
End Using
我尝试在“与”和“或”之间使用方括号,但这仍然行不通。有什么建议么 ?
尽管我不喜欢您的方法,但是您应该分隔查询或为每个“人”请求为您提供一个函数来检索结果。对于您的解决方案,请尝试conca = " and "
从第一和第二个' if/else
'语句中删除此:将每个结果添加到您的数据表中,然后将数据表加载到gridview中。
您应该调用与此类似的函数以在数据读取器中获取结果,然后提供数据表。这样,您可以分离查询。棘手的部分是要有一种优雅的方式来加载您的datagridview。我的建议是停止使用数据表(它们非常糟糕)。您应该使用IEnumerable
或可以List (Of Object)
在其中添加每个查询的结果的位置。
Public Shared Function GetMeDatareader(yourQuery As String) As OracleDataReader
Using con As New OracleConnection("Data Source=myDB;User Id=Lucky;Password=MyPassword;")
con.Open()
Using cmd As New OracleCommand()
Dim SQL As String = yourQuery
'Retrieve data using execute reader
cmd.Connection = con
cmd.CommandText = SQL
cmd.CommandType = CommandType.Text
Dim dr As OracleDataReader = cmd.ExecuteReader()
Return dr
End Using
End Using
End Function
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句