Exemplo de acesso a dados com SQL Server em C#.
Postado em : 23/08/2016
Acessando dados no SQL Server
Publicamos aqui uma classe para acesso a dados utilizando o SQL Server, caso queira dar uma olhada o link esta logo abaixo.
Agora vamos postar alguns passos e exemplos para que possa ler e gravar seus dados neste banco de dados.
Tratando os Erros
Em todos os exemplos vamos derivar uma classe para tratamento dos erros deixando fácil a captura e exibição dos mesmos durante os processo de consulta e manutenção em nossa base de dados.
Segue abaixo nossa classe para tratamento dos erros, crie uma classe com o nome de Erros.cs
em seu projeto copie e cole o código abaixo:
/* * Classe tratamento Erros * * By Antonio Azevedo * * Visite nossa página http://www.codigoexpresso.com.br * */ using System; public class Erro { private string mErro { get; set; } public Erro() { mErro = ""; } /// <summary> /// Retorna a Mensagem de erro /// </summary> /// <returns></returns> public string getMensagemErro() { return mErro; } public void setMensagemErro(string mErro) { this.mErro = mErro; } public Boolean isErro() { if (getMensagemErro().Trim().Length > 0) { return true; } return false; } public string MensagemErroFormatada() { if (isErro()) { return "Um Erro Inesperado aconteceu !!!<br />Procure departamento responsável e relate o erro abaixo<br /><br />" + getMensagemErro(); } return "Operação realizada com sucesso !!!"; } }
Para utilizar esta classe declare como dependência em em suas classes de acesso a dados DAO (Data Acess Object), conforme exemplo abaixo:
public class DAO : Erros { // Seu código aqui }
Fazendo isto nossa classe vai herdar a classe Erros deixando disponível suas funções.
Para todos os exemplos que apresentaremos abaixo considere a seguinte classe:
public class Curso { public int idCurso { get; set; } public string Descricao { get; set; } }
Exemplo de acesso a dados por por linha de comando
Recuperando uma lista de objetos.
public List<Curso> ListaCursos(int idCurso) { // Instancia nossos objetos List<Curso> lcursos = new List<Curso>(); Curso curso = new Curso(); // Instancia nossa Conexao Conexao conexao = new Conexao(TipoConexao.Conexao.WebConfig); // Se existe erro na conexao move o erro para a classe de acesso if (conexao.ExisteErro()) { setMensagemErro(conexao.mErro); return lcursos; } try { SqlDataReader reader; // Nosso comando SQL string query = "select c.idcurso, descricao_curso = c.descricao from cursos c where idcurso = "+idCurso.ToString()+" order by c.descricao"; SqlCommand cmd = new SqlCommand(query, conexao.conn); // define que o comando é um texto cmd.CommandType = System.Data.CommandType.Text; // Abre nossa Conexao if (conexao.OpenConexao() == false) { setMensagemErro(conexao.mErro); return null; } reader = cmd.ExecuteReader(); // recebe os dados de nossa consulta while (reader.Read()) { // Inicializa nosso objeto curso = new Curso(); // Carrega os dados curso.idCurso = Convert.ToInt32(reader["idcurso"]); curso.Descricao = (string)reader["descricao_curso"] ?? ""; // Adiciona a nossa lista de dados lcursos.Add(curso); } } catch (SqlException e) { // Trata os erros de nossa conexão setMensagemErro(e.Message.ToString()); } // Fecha nossa Conexao conexao.CloseConexao(); // Retorna nossa lista de dados return lcursos; }
Exemplo utilizando Stored Procedure com passagem de parâmetro
Recuperando uma lista de objetos.
public List<Curso> ListaCursos(int idCurso) { // Instancia nossos objetos List<Curso> lcursos = new List<Curso>(); Curso curso = new Curso(); // Instancia nossa Conexao Conexao conexao = new Conexao(TipoConexao.Conexao.WebConfig); // Se existe erro na conexao move o erro para a classe de acesso if (conexao.ExisteErro()) { setMensagemErro(conexao.mErro); return lcursos; } try { SqlDataReader reader; SqlCommand cmd = new SqlCommand("[pcdListaCurso]", conexao.conn); cmd.CommandType = System.Data.CommandType.StoredProcedure; cmd.Parameters.AddWithValue("@idcurso", idCurso); // Abre nossa Conexao if (conexao.OpenConexao() == false) { setMensagemErro(conexao.mErro); return null; } reader = cmd.ExecuteReader(); // recebe os dados de nossa consulta while (reader.Read()) { // Inicializa nosso objeto curso = new Curso(); // Carrega os dados curso.idCurso = Convert.ToInt32(reader["idcurso"]); curso.Descricao = (string)reader["descricao_curso"] ?? ""; // Adiciona a nossa lista de dados lcursos.Add(curso); } } catch (SqlException e) { // Trata os erros de nossa conexão setMensagemErro(e.Message.ToString()); } // Fecha nossa Conexao conexao.CloseConexao(); // Retorna nossa lista de dados return lcursos; }
Alterando os dados com Stored Procedure e passagem de parametros
A grande diferença para atualização de dados e que não precisamos receber uma consulta então trocamos o ExecuteReader()
pelo comando ExecuteNonQuery()
veja no exemplo abaixo:
public int Cursos_Update(Curso curso) { // Instanciamos nossa variavel de retorno int _return = 0; // Instancia nossa Conexao Conexao conexao = new Conexao(TipoConexao.Conexao.WebConfig); // Se existe erro na conexao move o erro para a classe de acesso if (conexao.ExisteErro()) { setMensagemErro(conexao.mErro); return -1; } try { SqlCommand cmd = new SqlCommand("[pcdCurso_UPD]", conexao.conn); cmd.CommandType = System.Data.CommandType.StoredProcedure; cmd.Parameters.AddWithValue("@idcurso", curso.idCurso); cmd.Parameters.AddWithValue("@descricao", curso.Descricao); // Abre nossa Conexao if (conexao.OpenConexao() == false) { setMensagemErro(conexao.mErro); return -1; } _return = cmd.ExecuteNonQuery(); } catch (SqlException e) { // Trata os erros de nossa conexão setMensagemErro(e.Message.ToString()); _return = -1; } // Fecha nossa Conexao conexao.CloseConexao(); // Retorna nossa lista de dados return _return; }
No link abaixo você encontra exemplos de Stored Procedure para SQL Server.
Links Relacionados
- Arquitetura CQRS
- Arrays em C#(CSharp)
- Aula 11 - Acessando Banco de Dados SQL SERVER - Criando Consultas em sua aplicação em Asp.Net MVC 4 com C#(CSharp)
- Aula 12 - MS SQL Server - Comandos SQL e Stored Procedures em sua aplicação em Asp.Net MVC 4 com C#(CSharp)
- Aula 15 - Download das ferramentas necessárias para o nosso curso de Asp.Net MVC 4 com C#(CSharp)
- Aula 16 - Criando o banco de dados e configurando o SQLServer para nosso curso de Asp.Net MVC 4 com C#(CSharp)
- Aula 17 - Criando o banco de dados e configurando o SQLServer EXPRESS para nosso curso de Asp.Net MVC 4 com C#(CSharp)
- C#(CSharp) Converter inteiro para Hexadecimal e Hexadecimal para Inteiro
- C#(CSharp) Exemplo de Conversão de um List<> de uma classe qualquer para um DataTable.
- C#(CSharp) Função para verificar se um determinado número é Primo
- Calcular Idade C# (CSharp), diferença anos entre duas datas
- Classe com Métodos de extensão C# (CSharp)
- Classe para fazer Conexão MS SqlServer em C#(CSharp)
- Classe para Ler e Gravar Cookies - Asp.Net MVC 4 com C# (CSharp)
- Classe para tratar valores nulos vindos de nossa Query SQL, C#(CSharp).
- Classes anônimas em C#(CSharp)
- Comando nameof() C#(CSharp)
- Comando NULLIF no SQLServer.
- Compare duas strings ignorando maiúsculas e minúsculas C#(CSharp).
- Consulta SQLServer com paginação
- Criando Tabelas Temporarias em MS-SqlServer
- Criar Classes Dinâmicas usando DynamicObject e ExpandoObject em C# (CSharp)
- Curso Instalando e configurando o MS SQL Server Express 2014 e Management Studio 2014
- Definir o dia em um DateTime.
- DELETE CASCADE no SqlServer
- Desvendando o Poder da Função STRING_AGG no SQL Server para concatenação de dados
- Diferença entre parâmetros REF e OUT em C#(CSharp)
- DROP TABLE IF EXISTS no SQL Server.
- Emitir sons pelo auto-falante do computador em C# (CSharp)
- Estrangulando um monólito C#(CSharp)
- Exemplo de consulta em SqlServer para encontrar uma chave Estrangeira
- Exemplo de Stored Procedure com tratamento de erros e transação. (SqlServer)
- Exemplos de Stored Procedure SQL Server
- Explorando Tipos de Dados Personalizados no SqlServer: Utilidade e Impacto na Performance
- Extensões para DataReader, tratando valores de suas consultas SQL (DataReaderExtensions) C#(CSharp)
- Fazendo a paginação de consultas em MySQL com o comando Limit e Offset
- Formatando datas SqlServer
- Formatar CEP em C# (CSharp)
- Função para devolver data do próximo dia da semana informado C#(CSharp).
- Função para gerar tabela com listagem contendo intervalo entre duas datas. (SqlServer)
- Gerando números randômicos para sorteio de jogos de azar C#(CSharp)
- Grafana Loki e .NET Framework com C#
- Incrementando e decrementando variáveis em C#(CSharp)
- Injeção de dependência
- Ler string de conexão (connectionStrings) do arquivo Web.config Asp.Net MVC co C#(CSharp)
- Métodos de extensão C#
- MS SQL Server Express 2014 e Management Studio 2014 - Download e Intalação
- Não consigo apagar um Banco de dados (can not drop database) - MS-SQL Server.
- Ordenando um array com o comando OrderBy C#(CSharp)
- Parar um loop foreach usando o comando break C#(CSharp).
- Quando utilizar NOLOCK e READPAST no SqlServer.
- Recuperar a URL da página anterior em Asp.Net C# (CSharp)
- Recuperar a URL da página atual em Asp.Net C# (CSharp)
- Recuperar para código C# (CSharp) o valor de um componente de nossa página
- Restaurando um Banco de dados quando este fica travado informando estar restaurando, MS-SQL Server.
- Retorna o IP da conexão do Cliente em Asp.Net MVC com C# (CSharp)
- Retorna os dados do Navegador do Cliente em Asp.Net MVC com C# (CSharp)
- Rodando Script MS-SQL Server diretamente pela linha de comando
- Salvando CSV com cabeçalho no SQL Server Management Studio
- Separar String de caracteres C#(CSharp)
- Serilog e .NET Framework com C#
- Tipos de dados em C# (CSharp)
- Tipos de dados primitivos em C#(CSharp)
- Trabalhando com Cursores em MS-SQL Server.
- Tratando colunas nulas em sua Query SqlServer
- Update/Delete com INNER em MS-SQL Server
- Validando Valores nulos vindos de nosso Banco de Dados C#(CSharp)
- Validar Modelos com Data Annotation e Windows Form Application C#(CSharp)
- Verificar se uma string é um digito em C# (CSharp)