Integrando o SQLServer dentro do seu projeto C#
- #C#
- #SQL Server
Bom dia, boa tarde, boa noite seja lá onde você esteja!
Introdução
Durante a realização do Bootcamp Decola Tech que é voltado para programação em C# eu pude perceber que várias vezes era mencionada a utilidade do banco de dados em seu projeto, e a partir das aulas é mostrado como podemos criar um banco de dados em memória (que funciona apenas quando o programa está em execução) e como integrar um banco de dados em seu projeto Asp.NET, mas eu percebi que não tem um tutorial explicando como integrar o banco de dados dentro de um projeto padrão de Console, e vi também que algumas pessoas tinham essa curiosidade, então nesse breve tutorial pretendo mostrar como podemos fazer isso com poucas linhas de código.
Dependências
* Esse tutorial vale tanto para o Visual Studio Code como para o Visual Studio Community.
Para podermos fazer a integração com o banco de dados existem várias formas, a forma que eu irei mostrar é a partir de um dependência chamada SqlClient que infelizmente não vem por padrão dentro do nosso projeto quando o criamos, por isso precisamos instalar essa dependência, para isso pelo cmd ou terminal do editor de código que você esteja usando, você deve digitar o seguinte comando dentro da pasta que contém seu projeto (a pasta que contém o arquivo .csproj):
dotnet add package System.Data.SqlClient
Feito isso perceba que dentro do seu csproj será gerando um campo parecido com esse caso tudo tenha dado certo:
<ItemGroup>
<PackageReference Include="System.Data.SqlClient" Version="4.8.3" />
</ItemGroup>
Programando
Dentro do arquivo que iremos fazer as consultas do banco de dados nós devemos importar o pacote que instalamos para termos acesso a todas as classes que nos ajudaram a fazer isso.
using System.Data.SqlClient;
Após isso dentro do método que será responsável pelas consultas devemos fazer o seguinte:
Vamos criar uma variável do tipo string que armazenará os dados responsáveis pela conexão com o banco de dados, existem vários modelos dessas strings de conexão (você pode velos clicando aqui), a que iremos utilizar é uma bem simples.
Ps: altere os campos com as informações do seu banco de dados.
string stringDeConexao = "Server=NOMEDOSERVIDOR;Database=SEUBANCOAQUI;Trusted_Connection=True;";
* Trusted_Connection indica que você está dizendo que aquela conexão é confiável, uma forma de já autenticar o banco sem precisar da senha e usuário.
Agora que temos a nossa string de conexão aonde devemos usa-la? Nós a usamos como parâmetro na instância de um cara chamado SqlConnection que é responsável pela conexão com o banco de dados.
using (SqlConnection conexao = new SqlConnection(stringDeConexao)) {
conexao.Open();
// ...
* Nós declaramos a instância dentro de um using para após a sua utilização ela seja descartada;
* O método .Open() inicia a conexão.
Pronto! A conexão já foi iniciada, agora podemos fazer as nossas consultas seja ela um Insert, Select, Delete, etc. para fazermos isso nós vamos instanciar o cara responsável por executar esses comando o SqlCommand:
//ainda dentro do using do SqlConnection
using (SqlCommand comando = new SqlCommand()) {
comando.Connection = conexao;
comando.CommandText = "SELECT * FROM Tabela";
//...
* Depois de instanciar o SqlCommand nós atribuímos um valor a variável interna dele chamada Connection, dentro dela nós passamos a nossa conexão;
* E em CommandText nós passamos a consulta que desejamos.
* O conteúdo abaixo é para a consulta do tipo SELECT, caso você queria fazer uma consulta do tipo INSERT, DELETE ou UPDATE (que alteram valores dentro do banco de dados) adicione a seguinte linha embaixo do CommandText: comando.ExecuteNonQuery();
Agora para nós pegarmos esses dados do select, nós vamos usar uma classe chamada SqlDataReader que como o próprio nome já diz é um leitor de dados sql.
//ainda dentro do using do SqlCommand
SqlDataReader leitorDados = comando.ExecuteReader();
while (leitorDados.Read()){
string nome = leitorDados["Nome"].ToString();
Console.WriteLine(nome);
}
leitorDados.Close();
} // chaves do using do SqlCommand
} // chaves do using do SqlConnection
Console.ReadKey(); // para podermos vizualizar no console os resultados
} // chaves do Método
} // chaves da Classe
} // chaves do Namespace
* Ao invés de instanciarmos um novo SqlDataReader nós estamos passando um ExecuteReader do nosso SqlCommand, ou seja, estamos passando o resultado da nossa consulta para o leitorDados que irá mostrá-lo para nós;
* O while continuará sendo executado até não ter mais nenhuma informação para passar;
* Para pegarmos o valor nós passamos no leitorDados o nome do item da Tabela como índice;
* Se nós quisermos executar um novo SqlDataReader, nós devemos fechar o anterior antes de iniciar um novo por isso o leitorDados.Close().
Exemplo de script:
using System;
using System.Data.SqlClient;
public class Program
{
public static void Main(string[] args)
{
string stringDeConexao = "Server=LEONARDOD\\SQLEXPRESS;Database=WebSiteTest;Trusted_Connection=True;";
using(SqlConnection conexao = new SqlConnection(stringDeConexao)){
conexao .Open();
using(SqlCommand comando = new SqlCommand()){
comando.Connection = conexao ;
comando.CommandText = "SELECT * FROM Pessoa";
SqlDataReader leitorDeDados = comando.ExecuteReader();
while(leitorDeDados.Read()){
string nome = (String) leitorDeDados["Nome"];
Console.WriteLine(nome);
}
leitorDeDados.Close();
}
}
Console.ReadKey();
}
}
Com esse simples tutorial nós conseguimos ver uma maneira simples de integrar o SQLServer com o nosso projeto C# e ainda realizar consultas, se você estiver interessado em um modelo mais robusto desse código acesse meu Repositório: ... (ainda finalizando o repositório, aguarde :P)
Obrigado quem leu até aqui! E espero que eu tenha conseguido ajudar alguém, qualquer dúvida ou correção do código é só falar nos comentários.
Flw!