Udostępnij za pośrednictwem


Porady: ustawianie i pobieranie parametrów dla obiektów poleceń

Jeśli używasz polecenia obiekty do wykonywania poleceń w bazie danych, instrukcje SQL lub procedur przechowywanych, które realizują często są wymagane parametry.Na przykład prostej instrukcji Update, która wymaga parametrów może wyglądać następująco:

UPDATE Employees
SET LastName = @LastName, FirstName = @FirstName, BirthDate = @BirthDate
WHERE (EmployeeID = @EmployeeID)

Podczas wykonywania tej instrukcji należy podać wartości dla wszystkich parametrów (@LastName, @FirstName, @BirthDate, i @EmployeeID).Aby to zrobić, można używać parametru obiektów.Obiekty poleceń obsługuje kolekcji parameters (na przykład, Parameters) zawierający zestaw obiektów typu SqlParameter, OleDbParameter, OdbcParameter, lub OracleParameter.Istnieje jeden parametr obiekt w kolekcji dla każdego parametru, który trzeba przekazać.Ponadto wywoływane są procedury przechowywanej, może być konieczne dodatkowy parametr, aby zaakceptować procedurę zwracanej wartości.

[!UWAGA]

Jeśli jest używany element dataset, użytkownik zazwyczaj nie wykonuje poleceń bezpośrednio.Zamiast tego przekazania parametrów do kwerendy TableAdapter, aby uzyskać więcej informacji, zobacz Porady: wypełnianie zestawu danych danymi.

Ustawienie wartości parametru

Przed wykonaniem polecenia, należy ustawić wartość dla każdego parametru w poleceniu.

Aby ustawić wartość parametru

  • Dla każdego parametru w kolekcji parametrów polecenia, należy ustawić jego Value właściwości.

    Poniższy przykład pokazuje, jak ustawić parametry przed wykonaniem polecenia, który odwołuje się do procedury przechowywanej.Próbki zakłada została już skonfigurowana kolekcji parametrów z trzema parametrami, o nazwie au_id, au_lname, i au_fname.Poszczególne parametry zostały ustawione przez nazwę aby było jasne, którego parametr jest ustawiany.

    With oleDbCommand1
        .CommandText = "UpdateAuthor"
        .CommandType = System.Data.CommandType.StoredProcedure
        .Parameters("au_id").Value = "172-32-1176"
        .Parameters("au_lname").Value = "White"
        .Parameters("au_fname").Value = "Johnson" 
    End With
    
    OleDbConnection1.Open()
    oleDbCommand1.ExecuteNonQuery()
    OleDbConnection1.Close()
    
    oleDbCommand1.CommandText = "UpdateAuthor";
    oleDbCommand1.CommandType = System.Data.CommandType.StoredProcedure;
    
    oleDbCommand1.Parameters["au_id"].Value = "172-32-1176";
    oleDbCommand1.Parameters["au_lname"].Value = "White";
    oleDbCommand1.Parameters["au_fname"].Value = "Johnson";
    
    oleDbConnection1.Open();
    oleDbCommand1.ExecuteNonQuery();
    oleDbConnection1.Close();
    

Pobieranie wartości zwracanej

Procedury przechowywane często przekazania wartości powrotem do aplikacji, która je wywołała.

Aby uzyskać wartości zwracane przez procedury

  1. Tworzenie parametrów którego Direction właściwość jest ustawiona na wyjście lub wejścia/wyjścia, (Jeśli parametr jest używany w procedurze zarówno odbierać i wysyłać wartości).Upewnij się, że typ danych parametru pasuje do oczekiwanej wartości zwracanej.

  2. Po wykonaniu procedury, przeczytać Value właściwość parametr przekazywany Wstecz.

Aby uzyskać procedury zwracana wartość

  1. Tworzenie parametrów którego Direction właściwość jest ustawiona na ReturnValue.

    [!UWAGA]

    Parametr obiektu dla wartości zwracanej, musi być pierwszy element w kolekcji parameters.

  2. Upewnij się, że typ danych parametru pasuje do oczekiwanej wartości zwracanej.

    [!UWAGA]

    Instrukcje Update, Insert i usunąć SQL zwraca wartość liczbową wskazującą liczbę rekordów, które dotyczy deklaracja.Można uzyskać tę wartość jako wartość zwracaną przez ExecuteNonQuery metody.Aby uzyskać więcej informacji, zobacz Modifying Data with Stored Procedures.

Poniższy przykład ilustruje sposób uzyskać wartość zwracaną przez procedury przechowywanej o nazwie CountAuthors.W takim przypadku zakłada się, że pierwszy parametr w kolekcji parametrów polecenia o nazwie "RetValue przypisywana jest" i że jest konfigurowana w kierunku ReturnValue.

Dim returnValue As Integer

oleDbCommand1.CommandText = "CountAuthors"
oleDbCommand1.CommandType = CommandType.StoredProcedure

oleDbConnection1.Open()
oleDbCommand1.ExecuteNonQuery()
oleDbConnection1.Close()

returnValue = CType(oleDbCommand1.Parameters("retvalue").Value, Integer)
MessageBox.Show("Return Value = " & returnValue.ToString())
int returnValue;

oleDbCommand1.CommandText = "CountAuthors";
oleDbCommand1.CommandType = CommandType.StoredProcedure;

oleDbConnection1.Open();
oleDbCommand1.ExecuteNonQuery();
oleDbConnection1.Close();

returnValue = (int)(oleDbCommand1.Parameters["retvalue"].Value);
MessageBox.Show("Return Value = " + returnValue.ToString());

Zobacz też

Zadania

Porady: tworzenie i wykonywanie instrukcji SQL zwracającej wiersze

Porady: tworzenie i wykonywanie instrukcji SQL zwracających pojedynczą wartość

Porady: tworzenie i wykonywanie instrukcji SQL nie zwracających wartości

Porady: wykonywanie procedury przechowywanej, która zwraca wiersze

Porady: wykonywanie procedury przechowywanej zwracającej pojedynczą wartość

Porady: wykonywanie procedury przechowywanej, która nie zwraca wartości

Koncepcje

Pobieranie danych do aplikacji

DataAdapter Parameters

Modifying Data with Stored Procedures