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!
Faça parte da nossa comunidade!
Domine as tecnologias utilizadas pelas empresas mais inovadoras do mundo e encare seu novo desafio profissional, evoluindo em comunidade com os melhores experts.