Como: conjunto e Get Parameters for Command Objects
Se você estiver usando objetos de comando para executar comandos em um banco de dados, as instruções SQL ou procedimentos armazenados que estão executando frequentemente exigem parâmetros.Por exemplo, uma simples instrução Update que requer parâmetros pode parecer da seguinte forma:
UPDATE Employees
SET LastName = @LastName, FirstName = @FirstName, BirthDate = @BirthDate
WHERE (EmployeeID = @EmployeeID)
Quando essa instrução é executada, você deve fornecer valores para todos os parâmetros (@LastName,@FirstName,@BirthDate e @EmployeeID).Para fazer isso, você usa objetos de parâmetro.Objetos de comando suportam uma coleção de parâmetros (por exemplo, Parameters) que contém um conjunto de objetos do tipo SqlParameter, OleDbParameter, OdbcParameter, ou OracleParameter.Há um objeto de parâmetro na coleção para cada parâmetro que você precisar passar.Além disso, se você estiver chamando um procedimento armazenado, você precisará de um parâmetro adicional para aceitar o procedimento de valor de retorno.
Observação: |
---|
Se você estiver usando um conjunto de dados, você normalmente não executa comandos diretamente.Em vez disso, você pode passar parâmetros para consultas de TableAdapter, para obter mais informações, consulte Como: Preencher um DataSet com dados. |
Definindo Valores de Parâmetro
Antes de executar um comando, você deve definir um valor para cada parâmetro no comando.
Para definir um valor de parâmetro
Para cada parâmetro na coleção de parâmetros do comando, defina sua propriedade Value.
O exemplo a seguir mostra como definir parâmetros antes de executar um comando que referencia um procedimento armazenado.O exemplo supõe que você já configurou a coleção de parâmetros com três parâmetros nomeados au_id, au_lname, e au_fname.Os parâmetros individuais são definidos pelo nome para tornar claro qual parâmetro está sendo definido.
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();
Obtendo Valores de Retorno
Procedimentos armazenados frequentemente passam valores de volta para o aplicativo que os chamou.
Para obter valores retornados por procedimentos
Crie parâmetros cujas propriedades Direction são definidas como Output ou InputOutput (se o parâmetro é usado no procedimento para receber e enviar valores).Certifique-se de que o tipo de dados do parâmetro corresponda ao valor de retorno esperado.
Depois de executar o procedimento, leia a propriedade Value do parâmetro sendo passado de volta.
Para obter um procedimento do valor de retorno
Crie parâmetros cujas propriedades Direction são definidas como ReturnValue.
Observação: O objeto de parâmetro para o valor de retorno deve ser o primeiro item na coleção de parâmetros.
Certifique-se de que o tipo de dados do parâmetro corresponda ao valor de retorno esperado.
Observação: As instruções SQL Update, Insert, e Delete retornam um valor inteiro indicando o número de registros afetados pela instrução.Você pode obter esse valor sistema autônomo o valor retornado a ExecuteNonQuery método. Para obter mais informações, consulte Using Procedimentos Armazenados to Atualizar Dados.
O exemplo a seguir mostra como obter o valor de retorno de um procedimento armazenado chamado CountAuthors.Nesse caso, assume-se que o primeiro parâmetro na coleção de parâmetros do comando é chamado "retvalue" e que está configurado com uma direção de 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());
Consulte também
Tarefas
Como: Criar e executar uma demonstrativo SQL que retorna linhas
Como: Criar e executar uma demonstrativo SQL que retorna um valor único
Como: Criar e executar uma demonstrativo SQL que retorna nenhum valor
Como: Executar um procedimento armazenado que retorna linhas
Como: Executar um procedimento armazenado que retorna um valor único
Como: Executar um procedimento armazenado que retorna nenhum valor
Conceitos
Usando parâmetros com um DataAdapter
Using Procedimentos Armazenados to Atualizar Dados