Lab 12 - Conexão com SQL Server
Disciplina: C# Software Development Turma: 3ESPR Data: 13/10/2025 Professor: Charles
- RM553377 - Enzo Rodrigues
- RM553521 - Rafael Cristofali
LAB10_ConexaoSQLServer/
│
├── README.md # Este arquivo
├── INSTRUÇÕES_LAB10.md # Guia detalhado do laboratório
├── slides_aula12.md # Slides da aula teórica
├── setup.sql # Script de criação do banco
├── LAB10-ConexaoSQLServer.cs # Código base do laboratório
│
└── Solucoes/ # (Apenas para o professor)
└── LAB10-ConexaoSQLServer-Completo.cs
Ao final desta aula, o aluno será capaz de:
✅ Configurar SQL Server em Docker localmente ✅ Estabelecer conexões com banco de dados usando ADO.NET ✅ Executar comandos SELECT, INSERT, UPDATE e DELETE ✅ Utilizar parâmetros para prevenir SQL Injection ✅ Implementar transações para garantir consistência ✅ Gerenciar recursos de conexão adequadamente
- Introdução ao ADO.NET (10 min)
- SQL Server em Docker (5 min)
- Connection Strings e Conexões (5 min)
- Executando Comandos SQL (10 min)
- Boas Práticas e Segurança (10 min)
- Setup do Ambiente (15 min)
- Exercícios Básicos 1-6 (30 min)
- Exercícios Avançados 7-10 (35 min)
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=SqlServer2024!" \
-p 1433:1433 --name sqlserver2022 -d \
mcr.microsoft.com/mssql/server:2022-latest- Conecte ao SQL Server (localhost,1433 / sa / SqlServer2024!)
- Execute o arquivo
setup.sql
private static string connectionString =
"Server=localhost,1433;" +
"Database=LojaDB;" +
"User Id=sa;" +
"Password=SqlServer2024!;" +
"TrustServerCertificate=True;";dotnet runSqlConnection- Gerencia conexãoSqlCommand- Executa comandos SQLSqlDataReader- Lê resultadosSqlParameter- Parâmetros segurosSqlTransaction- Controle de transações
- Using statement para recursos
- Parametrização de queries
- Tratamento de exceções
- Gerenciamento de transações
- SELECT - Leitura de dados
- INSERT - Inserção de dados
- UPDATE - Atualização de dados
- DELETE - Exclusão de dados
- JOIN - Relacionamento de tabelas
┌─────────────┐
│ Clientes │
└──────┬──────┘
│
│ 1:N
▼
┌─────────────┐ ┌──────────────┐
│ Pedidos │◄───────►│ PedidoItens │
└──────┬──────┘ 1:N └──────┬───────┘
│ │
│ │
▼ ▼
┌──────────────┐ ┌─────────────┐
│ Categorias │◄────┐ │ Produtos │
└──────────────┘ 1:N└───┴─────────────┘
- ⭐ Connection String
- ⭐ Listar Produtos
- ⭐ Inserir Produto
- ⭐ Atualizar Produto
- ⭐ Deletar Produto
- ⭐ Buscar por ID
- ⭐⭐ Listar por Categoria (JOIN)
- ⭐⭐ Listar Pedidos de Cliente
- ⭐⭐ Detalhes do Pedido
- ⭐⭐⭐ Criar Pedido com Transação
- 🌟 Estoque Baixo
- 🌟 Busca por Nome (LIKE)
- 🌟 Total de Vendas por Período
- 🌟 Métodos Auxiliares Completos
- Docker Desktop - Container SQL Server
- Windows: WSL 2 habilitado
- macOS: Versão compatível com seu processador (Intel/Apple Silicon)
- Linux: Docker Engine
- Guia completo de instalação no arquivo de instruções
- .NET SDK 6.0+ - Desenvolvimento C#
- Azure Data Studio ou SSMS - Cliente SQL
- Visual Studio 2022 ou Rider - IDE completa
- VS Code + C# Extension - Alternativa leve
- DBeaver - Cliente SQL multiplataforma
Veja o guia completo de instalação do Docker no arquivo INSTRUÇÕES_LAB10.md, com instruções detalhadas para:
- ✅ Windows (10/11 Home, Pro, Enterprise)
- ✅ macOS (Intel e Apple Silicon)
- ✅ Linux (Ubuntu/Debian/Fedora)
# Iniciar SQL Server
docker run -e "ACCEPT_EULA=Y" \
-e "MSSQL_SA_PASSWORD=SqlServer2024!" \
-p 1433:1433 --name sqlserver2022 -d \
mcr.microsoft.com/mssql/server:2022-latest
# Verificar status
docker ps
# Ver logs
docker logs sqlserver2022
# Parar
docker stop sqlserver2022
# Iniciar novamente
docker start sqlserver2022
# Remover (para recomeçar do zero)
docker rm -f sqlserver2022Problemas com Docker? Consulte a seção completa de troubleshooting que inclui:
- Docker não inicia (Windows/Mac/Linux)
- Container SQL Server não inicia
- Problemas de porta 1433
- Problemas de performance
- Comandos de emergência
- Alternativas ao Docker
🔒 NUNCA concatene SQL - Sempre use parâmetros 🔒 Não exponha erros em produção 🔒 Valide entrada do usuário 🔒 Use senhas fortes em ambientes reais
⚡ Sempre feche conexões - Use using
⚡ Reutilize connection strings - Connection pooling
⚡ Use índices no banco de dados
⚡ Evite múltiplas queries - Prefira JOINs
💡 Teste queries no Azure Data Studio primeiro 💡 Use transações para operações múltiplas 💡 Leia comentários no código - eles guiam! 💡 Consulte correções quando travar
| Erro | Solução Rápida |
|---|---|
| "Cannot open database" | Execute setup.sql novamente |
| "Login failed" | Verifique senha no Docker e connection string |
| "Network error" | Verifique se Docker está rodando: docker ps |
| "Timeout" | Adicione Connection Timeout=30; na string |
| "Invalid column" | Verifique nomes das colunas C# vs SQL |
Mais detalhes: Consulte seção Troubleshooting em INSTRUÇÕES_LAB10.md
| Item | Peso |
|---|---|
| CRUD básico (Ex. 1-4) | 20% |
| Busca e validações (Ex. 5-6) | 15% |
| JOIN e listagem (Ex. 7) | 15% |
| Transação completa (Ex. 8) | 20% |
| Listagens de pedidos (Ex. 9-10) | 10% |
| Código limpo e boas práticas | 20% |
| TOTAL | 100% |
Pontos Extra: Desafios opcionais valem até +20%
- Leia TODA a instrução antes de começar
- Os comentários no código são seus guias
- Não tenha medo de errar - é parte do aprendizado
- Colabore com colegas, mas faça seu próprio código
- Alunos rápidos: 60-70 minutos
- Maioria da turma: 80-90 minutos
- Com desafios: 100-120 minutos
- Muitos esquecem o
usingstatement - SQL Injection é tentador para quem tem pressa
- Transações causam mais dúvidas
- Connection string com erro é comum no início