Skip to content

#12 Curso C# – Banco de dados

Boa noite pessoal. Tudo bem?

Hoje fecho o curso de C#, não é bem um curso mais espero ter ajudado quem necessitava de ajuda.

O final desse curso se encerra mostrando como conectar a linguagem C# a um banco de dados. O banco de dados escolhido foi o SQL Server e a escolha se deu pela facilidade que temos entre os dois. Vale lembrar que tanto o C# quanto o SQL Server são produtos da Microsoft.

A ideia de hoje é passar um resumo sobre conexão e os comandos básicos que utilizamos para manipulação de dados (Insert, Update, Delete e Select). Então bora começar o curso.

A biblioteca de classes ADO.NET contém uma estrutura abrangente para construir aplicativos que precisam recuperar e atualizar dados armazenados em um banco de dados relacional. O modelo definido pelo ADO.NET baseia-se na noção de provedores de dados. Cada sistema de gerenciamento de banco de dados tem um provedor de dados próprio que implementa uma abstração dos mecanismos para conectar a um banco de dados, emitir consultas e atualizar dados. Antes de aprendermos a conectar no banco de dados através de uma aplicação, iremos aprender os comandos básicos para se relacionar com os dados do banco de dados. Para utilizar melhor o capitulo será necessário criar a tabela no banco de dados.

create table pessoa
(
id int identity(1,1),
nome varchar(100),
dataNascimento datetime,
salario decimal(10, 2)
)

SELECT

Na sua forma mais básica, a declaração SELECT recupera as linhas e colunas de uma tabela. O exemplo a seguir ilustra o uso da declaração SELECT para recuperar todas as linhas e colunas da tabela.

select * from dbo.Products

O asterisco é uma notação abreviada que indica que todas as colunas serão recuperadas. A clásula FROM indica o nome da tabela que será acessada.

WHERE

A cláusula WHERE é usada para filtrar as linhas que são retornadas pela declaração. O exemplo a seguir ilustra a utilização da cláusula WHERE.

select * from dbo.Products where UnitPrice > 20

Expressões cláusulas WHERE

  • “=” Testa uma condição de igualdade
  • “<>” Testa uma condição não igualdade
  • “!=” Testa uma condição não igualdade
  • “>” Testa uma condição maior que
  • “>=” Testa uma condição maior ou igual a que
  • “<” Testa uma condição menor que
  • “<=” Testa uma condição menor ou igual a que
  • “LIKE” Testa a equivalência a um padrão

UPDATE

A declaração UPDATE é usada para modificar os dados em uma ou mais colunas de uma tabela ou view. A atualização de dados é normalmente direta, na forma de que você define qual objeto quer atualizar e então define o que quer atualizar nele. Uma atualização simples é mostrada na próxima listagem.

update dbo.Products set productName = ‘Toffuu’ where productId = 14

DELETE

Você pode usar a declaração DELETE para excluir uma ou mais linhas de uma tabela ou VIEW. A declaração DELETE remove apenas as linhas da tabela, e não a tabela do banco de dados. Abaixo segue um exemplo utilizando a declaração DELETE.

delete from dbo.Shippers where shipperid = 3

INSERT

A declaração INSERT é usada para inserir dados nas tabelas ou views. Você pode inserir dados em suas tabelas de diversas formas diferentes. Você pode inserir dados em uma tabela apenas especificando o nome da tabela, as colunas na quais está inserindo os dados e o valor atual dos dados inseridos.

insert into pessoa
(nome, dataNascimento, salario)
Values
(‘henrique’, ’11/25/1985′, 1200)

ADO.NET

Para utilizarmos as classes ADO.NET com o banco de dados SQL Server, necessitamos utilizar as namespace System.Data e System.Data.SqlClient.

SqlConnection:

Como o próprio nome informa, a função desta classe é ser responsável pela conexão e os detalhes com o banco de dados. Abaixo segue um exemplo de como conectar no banco e logo em seguida finalizar a conexão.

[sourcecode language=”csharp”]
string cString = @"Data Source=.\sqlexpress;Initial Catalog=Northwind;Integrated Security=True";
SqlConnection connection = new SqlConnection(cString);
connection.Open();
//há um processamento…
connection.Close();
[/sourcecode]

Olhando o código anterior é possível notar que houve uma instancia da classe SqlConnection e como parâmetro para o construtor foi passado a string de conexão com o banco SQL Server. Em seguida foi acionado o método da classe Open que tem a função de abrir a conexão com o banco de dados. A partir deste momento podemos utilizar instruções para consultar ou atualizar a base de dados.

É muito importante que toda conexão aberta seja fechada logo em seguida após a interação com o banco de dados. Deixar conexão aberta com o banco de dados é prejudicial à “saúde” da aplicação.

SqlCommand

Através da classe SqlCommand podemos conectar no banco de dados e também efetuar consultas e atualizações na base (inserir, atualizar e excluir). Abaixo veremos uma forma de conexão com o banco de dados.

[sourcecode language=”csharp”]
SqlCommand cmd = new SqlCommand();

cmd.Connection = connection; //objeto da classe SqlConnection

cmd.CommandText = "select * from dbo.Products";

SqlDataReader read = cmd.ExecuteReader();
[/sourcecode]

No código anterior utilizamos o objeto cmd que é uma instancia da classe SqlCommand. Configuramos a propriedade Connection para receber o objeto de conexão aberta com o banco (este objeto foi utilizado na sessão anterior). Na propriedade CommandText inserimos a ação que desejamos efetuar com o banco e nesse caso o desejo foi de consultar todos os produtos da base que estão armazenados na tabela Products. Nesta propriedade é possível inserir os comandos de inserção, atualização e exclusão. Por ultimo efetuamos a consulta através do método ExecuteReader que retorna um objeto com os dados encontrados.

SqlDataReader

A classe SqlDataReader fornece uma maneira de ler um fluxo do banco de dados retornados pelo Sql Server. Abaixo é disponibilizado um exemplo de código.

[sourcecode language=”csharp”]
SqlDataReader result = cmd.ExecuteReader();
if (result.HasRows)
{
while (result.Read())
{
string produto = result["productName"].ToString();
}
}
[/sourcecode]

Atualizando banco de dados

Para que possamos entender melhor os exemplos de atualização da base de dados será necessário criar a tabela abaixo:

create table exemplo
(
codigo int,
texto varchar(100),
logico bit,
valor decimal(10, 2)
)

INSERT

No primeiro exemplo de atualização é visualizado no próximo código como inserir registros de um programa em uma base de dados.

[sourcecode language=”csharp”]
SqlCommand cmd = new SqlCommand();
cmd.Connection = connection; //objeto da classe SqlConnection
cmd.CommandText = "insert into exemplo (codigo, texto, logico, valor) values (@codigo, @texto, @logico, @valor)";
cmd.Parameters.AddWithValue("@codigo", 3);
cmd.Parameters.AddWithValue("@texto", "ola banco");
cmd.Parameters.AddWithValue("@logico", 1);
cmd.Parameters.AddWithValue("@valor", 60.15);
int resultado = cmd.ExecuteNonQuery();
connection.Close();
[/sourcecode]

Para inserir registros na base de dados necessitamos da classe SqlCommand e como visto nos exemplos anteriores nada muda na criação de seu objeto. Para o comando de inserção necessitamos utilizar o comando INSERT na propriedade da classe CommandText. Os parâmetros da inserção são passados através da propriedade Parameters utilizando o método AddWithValue.

Para finalizar executamos o método da classe SqlCommando ExecuteNonQuery que retorna um numero que informa a quantidade de linhas afetadas na tabela. No caso de inserção sempre será 0 ou 1, onde 1 significa que 1 registro foi inserido.

UPDATE

No código abaixo é visualizado como efetuar uma atualização em um determinado registro da tabela.

[sourcecode language=”csharp”]
SqlCommand cmd = new SqlCommand();
cmd.Connection = connection; //objeto da classe SqlConnection
cmd.CommandText = "update exemplo set texto = @texto where codigo = @codigo";
cmd.Parameters.AddWithValue("@codigo", 3);
cmd.Parameters.AddWithValue("@texto", "ola novo banco");
int resultado = cmd.ExecuteNonQuery();
connection.Close();
[/sourcecode]

Do exemplo de INSERT para o exemplo de UPDATE pouca coisa mudou, com exceção do comando SQL UPDATE. Neste caso foi atualizado o registro que possui o valor 3 no campo código.

DELETE

No código abaixo é visualizado como efetuar uma exclusão em um determinado registro da tabela.

[sourcecode language=”csharp”]
SqlCommand cmd = new SqlCommand();
cmd.Connection = connection; //objeto da classe SqlConnection
cmd.CommandText = "delete from exemplo where codigo = @codigo";
cmd.Parameters.AddWithValue("@codigo", 3);
int resultado = cmd.ExecuteNonQuery();
[/sourcecode]

Em nosso ultimo exemplo de atualização de base verificamos que para efetuar uma exclusão de registro na base é necessário utilizar o comando DELETE da linguagem SQL. Note que estamos excluindo o registro através do campo código que é passado como parâmetro o valor 3.

Como pode ser visto os objetos ADO.NET são fáceis e úteis para acesso a banco de dados. Se você deseja criar uma aplicação que necessita armazenar dados em uma estrutura relacional será muito importante utilizar e aprender ADO.NET, mesmo que você decida utilizar um ORM (Irei explicar em outro artigo o que é).

Espero que tenham gostado do último curso de C#.

Fiquem com Deus e até a próxima.

Published inC#

Be First to Comment

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *