2016-04-20 4 views
0

Я новичок в SQL. Я не уверен, что это возможно, но у меня есть две таблицы: P_Movies & P_TV_Show. P_Movies имеет столбец под названием MOVIEID & P_TV_SHOWS имеет столбец TVID.Как отображать данные, когда пользователь вводит ID # в Oracle.DataAccess.Client, приложение формы VB

Im пытается выяснить утверждение, где, если пользователь вводит movieID, он выберет тот определенный moviteitle и режиссер. То же самое касается TVID, он будет отображать этот сертификат tvTitle и TVDirector.

Вот код, у меня есть:

  'Reference Orcale' 
     Imports Oracle.DataAccess.Client 

      Public Class frmSearch 

     'Get a Connection , string into a variable' 

     Dim oradb As String = "Data Source=(DESCRIPTION=" _ 
     + "(ADDRESS=(PROTOCOL=TCP)(HOST=------)(PORT=---))" _ 
     + "(CONNECT_DATA=(SERVICE_NAME=orclcitp)));" _ 
     + "User Id=----;Password=---;" 

     'Create an Oracle connection 
     Dim conn As New Odbc.OdbcConnection(oradb) 



     Private Sub BtnMainMenu_Click(sender As Object, e As EventArgs) 
     Handles BtnMainMenu.Click 

    'Show Main Menu Form' 
     frmMainMenu.Show() 

     'Hide Search Form' 
     Me.Hide() 

     End Sub 

     Private Sub BtnClear_Click(sender As Object, e As EventArgs) Handles 
     BtnClear.Click 

     'Set Focus and selects MovieID textbox' 

     txtMovieID.Focus() 
     txtMovieID.Select() 


     'Clear textbox and label' 

     txtMovieID.Clear() 
     txtTVID.Clear() 

     lblTitleDisplay.Text = "" 
     lblDirectorDisplay.Text = "" 

    End Sub 

    Private Sub BtnSearch_Click(sender As Object, e As EventArgs) Handles 
     BtnSearch.Click 

    'Create Variables for the data that will be retrieved from the database' 

    Dim strTitle As String = "" 
    Dim strDirector As String = "" 


    conn.Open() ' Open Orcale Connection' 

    'Select All Varaibles From database string' 


     Dim sql1 As String = "SELECT MOVIETITLE, MOVIEDIRECTOR FROM P_MOVIES 
    WHERE MOVIEID = '" & txtMovieID.Text & " ' SELECT TVTITLE,TVDIRECTOR 
    FROM P_TV_SHOWS WHERE TVID= '" & txtTVID.Text & "'" 

     'Create orcale command' 
     Dim cmd1 As New OracleCommand(sql1, conn) 

     'Eqaual command to the user selection' 
     cmd1.CommandText = sql1 
     cmd1.CommandType = CommandType.Text 

    'Create Oracle data reader which be stored in the variables created' 
    Dim dr As Odbc.OdbcDataReader = cmd1.ExecuteReader() 


    While dr.Read() 
     If Not dr.GetValue(0) Is DBNull.Value Then _ 
      strTitle = dr.GetString(0) 
     strDirector = dr.GetString(1) 
    End While 

    'Assign Variables to the data labels which will display them' 
    lblTitle.Text = strTitle 
    lblDirector.Text = strDirector 

    'Close Orcale Connection' 
    conn.Close() 



    'Set Focus to movieid textbox' 
    txtMovieID.Focus() 



    End Sub 
    End Class 
+1

Неправильный синтаксис SQL. Используйте «UNION ALL», чтобы получить оба результата: 'Выбрать ... Из P_MOVIES Где ... Союз Все Выберите ... От P_TV_SHOWS Где ...'. Кроме того, используйте параметры вместо конкатенации MovieID, TvId из-за проблем с SQL-инъекциями. –

ответ

0

Вы должны прочитать на SQL инъекции, специально для vb.net. Вы должны добавить параметры. Переменная в предложении where должна иметь префикс с клиентом доступа к данным в oracle.

Dim sql1 as string = "Select column1, column2 from table1 where somevalue = :userinput" 

cmd.Parameters.Add("userinput", textboxName.Text) 

Securing at .NET application on Oracle

Предупреждение: Я не знаю много vb.net, так что простите меня, но я использовать доступ оракула с C# ... Эти идеи должны быть одинаковыми.