У меня есть имена и фамилии для извлечения из БД, но это не работает, как должно. Я получаю имена и фамилии из таблицы, где они находятся в отдельных столбцах. Имена/фамилии отображаются в комбинации combobox/textbox в моей форме. Теперь мне нужно получить эти данные, но в моей БД есть только 4 поля, потому что все имена/фамилии объединены в эти поля (пользовательский запрос). Мой код работает в течение 2 поисков в то время, но не для всех 4. Вот мой код:Динамически извлекать данные Oracle из двойного параметра?
EDIT (это теперь работает - я отделенные параметры и добавил кронштейн ИЛИ):
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 = "и", потому что это всего лишь моментальный снимок из кода, я больше конкатенации в Query. Взгляните на мой отредактированный вопрос, теперь это работает для меня. Если у вас есть лучшее предложение для меня - как писать короткий код, пожалуйста, дайте мне знать, как это сделать. – LuckyLuke82
@ LuckyLuke82 Если он работает, тогда хорошо. Но вы должны создать динамическую функцию, которая извлекает результаты для вас, затем вы объединяете все в одну таблицу и представляете данные: dtAll = dtOne.Copy() dtAll.Merge (dtTwo) – alwaysVBNET
У вас есть ссылка на любой пример это ? – LuckyLuke82