Pesquisar

10 de jan de 2008

Acesso à Banco de Dados II Executando Comandos

Para se executar comando SQL ou Stored Procedures em um banco de dados, usamos objetos Command.

Assim como acontece com as conexões temos um objeto Command específico para cada Data Provider. Se você estiver usando um SqlConnection para se conectar ao SQL Server deve também usar SqlCommand para executar os comandos, se estiver usando um Provider OLE DB, o OleDbCommand será usado e assim por adiante.

As propriedades principais dos objetos Command são CommandText, CommandType e Connection.
O CommandType é para você especificar que tipo de comando será usado,  se é uma Query SQL ou Stored Procedure. Exemplo:

SqlCommand.CommandType = CommandType.Text;

SqlCommand.CommandType = CommandType.StoredProcedure;


E então deve especificar na propriedade CommandText a Query SQL  ou o nome da Stored Procedure.
A propriedade Connection é usada pra saber em qual conexão aquela instrução será executada. Você atribuir uma conexão previamente criada à essa propriedade. Exemplos:

SqlCommand MeuComando = new SqlCommand();

MeuComando.Connection = NorthwindConnection;

MeuComando.CommandType = CommandType.Text;

MeuComando.CommandText = "SELECT * FROM Customers";

 

SqlCommand TopTenCommand = new SqlCommand();

TopTenCommand.Connection = NorthwindConnection;

TopTenCommand.CommandType = CommandType.StoredProcedure;

TopTenCommand.CommandText = "Ten Most Expensive Products";

Depois que você tiver configurado seu objeto Command, deve executa-lo. Para isso temos 3 possibilidades, executar um comando que não retorna dados(ExecuteNonQuery), que retorna os dados linha por linha(ExecuteReader) ou que retorna apenas  um valor(ExecuteScalar, primeira coluna da primeira linha). Exemplo de ExecuteScalar e ExecuteNonQuery:

SqlCommand ExecuteScalarCommand = new SqlCommand();

ExecuteScalarCommand.Connection = ObjetodeConexao;

ExecuteScalarCommand.CommandType = CommandType.Text;

ExecuteScalarCommand.CommandText = "SELECT Count(*) FROM Customers";

 

ExecuteScalarCommand.Connection.Open();

int CustomerCount = (int)ExecuteScalarCommand.ExecuteScalar();

ExecuteScalarCommand.Connection.Close();



SqlCommand CreateTableCommand = new SqlCommand();

CreateTableCommand.Connection = NorthwindConnection;

CreateTableCommand.CommandType = CommandType.Text;

CreateTableCommand.CommandText = "CREATE TABLE Clientes (" +

  "[ClienteID] [int] IDENTITY(1,1) NOT NULL, " +

  "[Nome] [nvarchar](50)  NULL, )";

 

CreateTableCommand.ExecuteNonQuery();

Para o ExecuteReader temos um pouco mais de trabalho. Criamos um objeto DataReader para ler a tabela retornada e executamos seu método Read(). Um ponteiro estará apontando para a primeira linha dessa tabela, e cada vez que executamos o Read() é retornado True se ouver mais linhas e o ponteiro é passado para a seguinte. Exemplo de ExecuteReader:

ExecuteSqlCommand.CommandText = "SELECT * FROM Customers;";

SqlDataReader reader = ExecuteSqlCommand.ExecuteReader();

 

StringBuilder results = new StringBuilder();

while (reader.Read())

{

    for (int i = 0; i < reader.FieldCount; i++)

    {

        results.Append(reader[i].ToString() + "\t");

    }

    results.Append(Environment.NewLine);

}

E aqui terminamos mais uma parte da série Acesso à Banco de Dados, aprendendo como obter resultados de um Banco de Dados

Nenhum comentário: